“(select..)”上的where字段与工作where子句中的“select”不起作用

lnlaulya  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(380)

我需要运行一个查询来查看3个链接表上的内容:
表a=我们必须提取的数据的容器
表b=父表,其中包含与表a和c相关的ID
表c=包含待满足条件数据的表
然后:b->b.id->on 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提取它

kadbb459

kadbb4591#

这应该等同于您的查询:

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 在这里,但我很不确定你想要达到什么目的。。。

相关问题