在开发项目时遇到需要在两个不相干的表中按条件查询需要的数据
这里就是一个是产品表一个是文章表
他们之间没有任何关系
问题就要出来了 我们应该如何可以部分两次查询数据库一次性把数据拿到为下面就是结局办法:
直接上代码:
SELECT * FROM sys_product A LEFT JOIN sys_essay B ON A.id = B.id
union
SELECT * FROM sys_product A RIGHT JOIN sys_essay B ON A.id = B.id
这种是直接把后边那个查询的结果的列硬加在前面那个表的后面
效果如下
看着不是很美 其实还有一种更好看的效果
直接上代码
SELECT A.id as id, A.product_name as name FROM sys_product A
union ALL
SELECT B.id as id, B.title as name FROM sys_essay B
这样的话就是把后面查询到的结果直接拼接到第一个查询语句所查询结果的后面
效果图如下:
自然都看到这里了先别急着离开!!!
还有可以更简单点(个人不建议,因为你这样写后来者不容易看得懂)
SELECT A.id as id, A.product_name as name FROM sys_product A
union ALL
SELECT B.id, B.title FROM sys_essay B
就是后面那个起别名的的过程可以的省略
效果也是一样的
关于这种方法是否可以节省时间,减少数据库的压力还没经过实践证实,后期实践了再来更新!
细心的小伙伴都发现了 我后一个联合查询用的union多一个all如果不带这个all的话union是默认去重的,加上后我就不废话了!
本篇博客结束了如果有帮到你的点还请留下一颗小爱心
下一个bug见 !!!