mysql 外连接 - 确定连接的行是否存在
我有两个具有相同主键的表,但一个比另一个大得多。我想知道哪些 id 在较小的表中有一行。 (在示例中,a
较大,b
较小)。现在,我使用带有 CASE 的 OUTER JOIN 来确定 b 值是否为 NULL。它不起作用(总是得到 1)。解决这个问题固然很好,但必须有更好的方法。我该怎么做呢?
SELECT a.id,
CASE b.id
WHEN NULL THEN 0
ELSE 1
END AS exists
FROM a LEFT OUTER JOIN b
ON a.id=b.id;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这与您所展示的逻辑相同,但代码更短:
this has the same logic of what you showed but has a shorter code:
不。检查外键列中的
NULL
正是您执行此操作的方法。但是,没有任何东西等于
NULL
(它不是一个值),这就是为什么您的CASE
转到ELSE
部分。您需要使用IS NULL
来检查列是否为NULL
。No. Checking for a
NULL
in the foreign key column(s) is exactly how you do this.However, nothing is ever equal to
NULL
(it's not a value), which is why yourCASE
goes to theELSE
portion. You need to useIS NULL
to check if a column isNULL
.