Mysql查询,join空表时发生问题

发布于 2022-09-04 11:00:26 字数 465 浏览 7 评论 0

问题是这样的,用户表有一个记录,现在想用用户表join另一张计算出来的表,查询用户表的一个记录和另一张计算出来的表的所有记录。
但是这张计算得来的表有可能是空的,当它是空表的时候,最后的查询结果就只能是空值了

select * from user u1 join (select * from user where user.id=2) as u2 where u1.id=1;

比如以上这个sql语句,user表只有id为1的记录。查询出来是Empty set ,
怎么让它把id为1的记录取出来?

PS:试过左连接,,结果不行,报错了

select * from user u1 left join (select * from user where user.id=2) as u2 where u1.id=1;

在where u1.id=1附近出的错

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谁与争疯 2022-09-11 11:00:26

左连接是这样玩的么..

SELECT * FROM user LEFT JOIN user2 ON user1.id = user2.gid where 你的条件

以左表为基准,右表没数据也会返回左表的内容

SELECT * FROM table1 JOIN table2 
条件没有直接这样

明月松间行 2022-09-11 11:00:26

刚刚想出了一个答案,使用合并结果集
select u1.id from user as u1 where u1.id=1 union select u2.id from user u2 where u2.id=2;
即使用户表没有2这个记录也可以取出id为1的记录。而且把2改成3同样可以取出2和3的记录
又想了几分钟,发现左连接也是可以的,不过要加表连接条件,1=1.这样sql语句就不会报错了
之前试过这么做,但是结果集太乱以为不成功,所以看走眼了
感谢回答的朋友,你们的每一次回答都对我有不少的启发,谢谢你们

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文