我需要运行一个查询,查看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提取它
答案 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
,但是我不确定您要在此实现什么...