gpt4 book ai didi

mysql - 使用 LEFT OUTER JOIN 检查相关行不存在的最佳方法是什么

转载 作者:可可西里 更新时间:2023-11-01 06:27:39 30 4
gpt4 key购买 nike

使用 MySQL 5.x 我想高效从表 X 中选择所有行,其中表 Y 中没有相关行满足某些条件,例如

给我 X 中不存在与 foo = bar 相关的 Y 的所有记录

SELECT count(id) FROM X
LEFT OUTER JOIN Y ON y.X_id = X.id AND y.foo = 'bar'
WHERE y....?

据我了解,左外连接保证为左(第一个)表中的每一行生成一行——在本例中为 X——无论是否在连接表中找到令人满意的行。然后我想做的是只选择那些没有找到行的行。

在我看来,如果没有匹配的记录,y.X_id应该是NULL,但是这个测试似乎不起作用。 y.X_id = 0 或 !y.X_id 也不是。

编辑:更正了几个回复指出的转录错误(ON not AS)。修复了语法错误。

最佳答案

SELECT count(id) FROM X 
LEFT OUTER JOIN Y ON (y.X_id = X.id AND y.foo = 'bar')
WHERE y.X_id is null

你很接近。

首先正常进行连接,然后选择 Y 中的 not null 行实际上是 null 的所有行,因此您确定存在“不匹配” "而不仅仅是 Y 中的 null 值。

另请注意您在查询中输入的错误(已更正):

LEFT OUTER JOIN Y AS
-- should be
LEFT OUTER JOIN Y ON
-- This however is allowed
LEFT OUTER JOIN table2 as Y ON ....

关于mysql - 使用 LEFT OUTER JOIN 检查相关行不存在的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886095/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com