gpt4 book ai didi

MySQL 多个 IN 条件对同一张表进行子查询

转载 作者:行者123 更新时间:2023-11-29 01:36:33 26 4
gpt4 key购买 nike

我有多个带有子查询的 IN 条件。

SELECT
S.name,
S.email
FROM something S
WHERE
1 NOT IN (SELECT id FROM tags WHERE somethingId = S.id)
AND 2 NOT IN (SELECT id FROM tags WHERE somethingId = S.id)
AND 3 NOT IN (SELECT id FROM tags WHERE somethingId = S.id)

也许有更好的解决方案?像这样的东西:

    (1, 2, 3) NOT IN (SELECT id FROM tags WHERE somethingId = S.id)

最佳答案

改写为使用 NOT EXISTS。即当 somethingId 等于 s.id 且 id 为 1、2 或 3 的标签中没有行时从 S 返回。

SELECT
S.name,
S.email
FROM something S
WHERE NOT EXISTS (SELECT 1 FROM tags WHERE id in (1, 2, 3) and somethingId = S.id)

此外,NOT EXISTS 是“空安全的”。 (NOT IN(选择返回 null) 将根本不返回任何行。)

关于MySQL 多个 IN 条件对同一张表进行子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41480785/

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