MySQL查询嵌套查询

时间:2011-12-20 21:01:36

标签: php mysql

我试图在MySQL上运行嵌套查询(phpmyadmin)并通过PHP运行,两者都会导致输出错误。

注意:由于项目的敏感性,表名已被剪裁

SELECT * FROM `table1` WHERE ID="SELECT `field1` FROM `table2` WHERE ID=1"

这会返回零行,尽管每个查询都会提供一个有效的输出,如下所示

SELECT `field1` FROM `table2` WHERE ID=1

提供所需的输出,当在主查询的第一部分中使用时,此输出还提供了所需的输出。请帮忙。

2 个答案:

答案 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与包含第二个查询的字符串进行比较。