b.id-> 在 a-6ren">
gpt4 book ai didi

mysql - "... Where field ON (SELECT ..)"不能与工作 where 子句中的 "select"一起使用

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

我需要运行一个查询来查看 3 个链接表上的内容:

表 a = 我们必须提取的数据的容器

表b=父表,包含与表a和c相关的id

表 c = 包含要满足的条件的数据的表

然后:b-> b.id-> 在 a.bid 和 b.bid 上

我尝试像这样进行选择:

SELECT field_a
FROM a
WHERE field_b IN (SELECT b.id FROM b INNER JOIN c ON b.id = 1 WHERE c.aid = 1)

查询:

(SELECT b.id FROM b INNER JOIN c ON b.id = 1 WHERE c.aid = 1)

返回此结果:

Array ([0] => Array ([id] => 1))

因为我无法执行

"SELECT field_a FROM a WHERE field_b IN (SELECT ...)"

如果我尝试这样做

"SELECT field_a FROM a WHERE field_b IN (1)"

查询有效,但我需要先使用 select 提取它

最佳答案

这应该相当于您的查询:

SELECT field_a
FROM a
WHERE EXISTS(SELECT 1 FROM b
JOIN c ON b.id = 1
WHERE a.field_b = b.id
AND c.aid = 1)

但是此查询:

SELECT 1 FROM b
JOIN c ON b.id = 1
WHERE a.field_b = b.id
AND c.aid = 1

SELECT b.id FROM b INNER JOIN c ON b.id = 1 WHERE c.aid = 1

正如您所写,是错误的。虽然它运行并给出正确的结果,但 ON 子句不正确 - 它与 JOIN 无关。您可能想在这里使用另一个 EXISTS ,但我非常不确定您想在那里实现什么......

关于mysql - "... Where field ON (SELECT ..)"不能与工作 where 子句中的 "select"一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52442179/

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