我试图在MySQL上运行嵌套查询(phpmyadmin)并通过PHP运行,两者都会导致输出错误。
注意:由于项目的敏感性,表名已被剪裁
SELECT * FROM `table1` WHERE ID="SELECT `field1` FROM `table2` WHERE ID=1"
这会返回零行,尽管每个查询都会提供一个有效的输出,如下所示
SELECT `field1` FROM `table2` WHERE ID=1
提供所需的输出,当在主查询的第一部分中使用时,此输出还提供了所需的输出。请帮忙。
答案 0 :(得分:5)
请勿将其括在引号中。而是将其括在括号中:
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
答案 1 :(得分:2)
您的嵌套查询错误,它应如下所示:
SELECT * FROM `table1` WHERE ID in (SELECT `field1` FROM `table2` WHERE ID=1)
在您的情况下,您将table1.ID与包含第二个查询的字符串进行比较。