gpt4 book ai didi

MySQL 多重连接和排除

转载 作者:行者123 更新时间:2023-11-29 14:39:18 25 4
gpt4 key购买 nike

我正在努力处理 3 个表,我正在尝试加入并排除某些结果。基本上和mysql join where not exists几乎一样,但是我仍然不知道如何成功组合多个表。

目标是从表 A 中选择结果,其中中间表 B 中的行为空 OR,其中表 C(链接到 B,但不链接到 A) ) 与特定值不匹配

类似于:

SELECT      x 
FROM tablea
LEFT JOIN tableb
ON tablea.x = tableb.x
LEFT JOIN tablec
ON tableb.y = tablec.y
WHERE tableb.x IS NULL
OR tablec.z != 'excluded'

但它不起作用。我还想避免使用 NOT IN 或 NOT EXISTS 等子查询来加快速度...有什么建议吗?

编辑:尽管我之前说过,它应该有效。只需记住在合并多个连接时仔细检查正确的大括号、嵌套和“where”子句位置

最佳答案

这应该可以通过一个查询来完成任务并且速度相当快。 :)

SELECT x 
FROM tablea
LEFT JOIN tableb ON tablea.x = tableb.x
LEFT JOIN tablec ON tableb.y = tablec.y AND tablec.z != 'excluded'
WHERE
tableb.x IS NULL
OR tablec.y IS NOT NULL

这是假设您不介意从 tablea 获取行,其中 tableb.x 为 null 且 tablec.y 为 null,或者两者都不是。如果您只需要 tablea 中 tableb.x OR tablec.y 包含值的行,则需要将 OR 更改为 XOR。

关于MySQL 多重连接和排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309923/

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