gpt4 book ai didi

mysql - SELECT JOIN 与条件 (OR) 交叉

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

我需要做这样的事情(在 MySQL 中),我使用 UNION 的尝试直到现在才奏效。

理论上:

SELECT * FROM
tableA A

JOIN tableB B ON A.tableAId = B.tableAId

LEFT JOIN tableC C ON C.tableAId = A.tableAId

LEFT JOIN tableD D ON D.tableAId = A.tableAId

JOIN tableE E
ON (C.tableEId = E.tableEId OR D.tableEId = E.tableEId)

预期结果是 A 与 B 交叉,可选 C 与 A 交叉,可选 D 与 A 交叉,如果其 id 在 C 或 D 上,则得到 E 结果。

为了知道找到的记录是来自 C 还是 D,我使用 IF 检查 tableCId 或 tableDId 是否为空。

最佳答案

我认为您的代码可以工作。

SELECT *
FROM tableA A JOIN
tableB B
ON A.tableAId = B.tableAId LEFT JOIN
tableC C
ON C.tableAId = A.tableAId LEFT JOIN
tableD D
ON D.tableAId = A.tableAId JOIN
tableE E
ON E.tableEId IN (C.tableEId, D.tableEId);

这将过滤掉在 C 和 D 中没有匹配的行,以及那些在 C/D 中匹配但在 E 中不匹配的行。我认为这是可取的。

此外,ORIN 会对 JOIN 性能产生不良影响,但您没有将性能作为一个问题。

关于mysql - SELECT JOIN 与条件 (OR) 交叉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54696880/

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