mysql查询两张表,两张表结构完全一样,一张表是另外一张表的补充,当一张表不存在时查另外一张表
mysql查询两张表,两张表结构完全一样,一张表是另外一张表的补充,当一张表不存在结果时时查另外一张表。假如有表A和表B,A是公共表,B是私有表,先查询表B中是否有id为...
mysql查询两张表,两张表结构完全一样,一张表是另外一张表的补充,当一张表不存在结果时时查另外一张表。假如有表A和表B,A是公共表,B是私有表,先查询表B中是否有id为5的结果,如果有就不用查了如果没有再查表A是否有公共的结果。
展开
1个回答
展开全部
这个逻辑很多时候都是在代码中完成的,先查询B表,如果有就返回,如果没有再查询A表
如果一定要用sql完成也是可以的
select *,1 as sort from B where id=5
union
select *,2 as sort from A where id=5
order by sort asc
limit 1
分别查询A、B表中id=5的结果,用union合并。
如果A、B表只有一个表中有数据,那么结果肯定符合预期。
如果两个表都有id为5的数据,那么查询结果是两行。于是这里自定义了一个sort字段,B表为1,A表为2,对两条结果升序排列取第1条。这样就保证了如果A、B表都有数据时最后获取的是B表的数据。
追问
请问下如果使用union all连接不使用sort字段的情况下使用limit 1可以保证是表B优先吗
select * from B where id=5
union all
select * from A where id=5
limit 1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |