gpt4 book ai didi

mysql - 为什么 LEFT OUTER JOIN 会失效?

转载 作者:行者123 更新时间:2023-11-29 01:37:08 25 4
gpt4 key购买 nike

我有以下查询

SELECT COUNT(*) FROM Samples

返回 628

当下面的查询

SELECT * FROM 
(

SELECT
sa.*,
tagLists.tagNames AS tagNames,
tagLists.ProjectID AS ProjectID
FROM Samples sa
LEFT OUTER JOIN TagLists tagLists
ON sa.spotID = tagLists.taggedItemID
AND 6 = tagLists.taggedItemType
) ex

WHERE ex.ProjectID IS NULL

返回空表。

也就是外连接查询

SELECT
sa.*,
tagLists.tagNames AS tagNames,
tagLists.ProjectID AS ProjectID
FROM Samples sa
LEFT OUTER JOIN TagLists tagLists
ON sa.spotID = tagLists.taggedItemID
AND 6 = tagLists.taggedItemType

不包含任何 ProjectID 为空的行。

为什么? LEFT OUTER JOIN 不保证左表中的所有行都应该出现吗?

更新

抱歉,tagLists 中当然没有非空连接行。

更新 2

对不起伙计们,我是个傻瓜:真的有非空行我不关心...

最佳答案

您的查询不会返回任何数据的唯一情况是 Samples 的每一行在 TagLists 中都有对应的行满足连接条件,所有这些行都没有-ProjectID 字段中的 NULL 值。也就是说,每个样本都有一个类型为6的标签列表项。

对此进行测试的一个好方法是删除 WHERE 子句,并验证所有 628 行是否都返回了有效的 ProjectID

关于mysql - 为什么 LEFT OUTER JOIN 会失效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38501094/

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