MySQL查询嵌套查询
问题描述:
我试图在MySQL(phpmyadmin)和PHP上运行嵌套查询,并且两者都导致相同的输出,这是不正确的。MySQL查询嵌套查询
注:表的名字已经被削波,由于项目
SELECT * FROM `table1` WHERE ID="SELECT `field1` FROM `table2` WHERE ID=1"
这将返回零行的敏感性,虽然每个查询单独给出如下
SELECT `field1` FROM `table2` WHERE ID=1
给出所需的输出有效输出,并且在主要查询的第一部分中使用时此输出还提供了所需的内容。请帮忙。
答
请勿将其放在引号中。相反,它括在括号:
SELECT * FROM `table1` WHERE ID=(SELECT `field1` FROM `table2` WHERE ID=1)
如果多行从预期的子查询,使用WHERE ID IN (SELECT...)
代替WHERE ID=(SELECT...)
你可能有一个JOIN
虽然获得更好的性能:
SELECT table1.*
FROM
table1 JOIN table2 ON table1.ID = table2.field1
WHERE table1.ID = 1
+0
只是想通了:)。谢谢。两分钟后我会标记为正确答案(规则在这里) – sikas 2011-12-20 21:04:26
答
你的嵌套查询是错误的,它应该看起来像这样:
SELECT * FROM `table1` WHERE ID in (SELECT `field1` FROM `table2` WHERE ID=1)
在你的情况,你比较table1.ID与包含第二个查询的字符串。
如果只有表名可以放弃它,则必须非常*敏感。 :) – GolezTrol 2011-12-20 21:03:19