在工作where子句中,“ ... where字段ON(SELECT ..)”不适用于“ select”

时间:2018-09-21 10:53:47

标签: mysql select pdo inner-join

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

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

表b =父表,其中包含与表a和c相关的ID

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

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

我试图这样选择:

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提取它

1 个答案:

答案 0 :(得分:1)

这应该等同于您的查询:

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,但是我不确定您要在此实现什么...