SELECT语句中的MySQL子查询

时间:2014-04-28 05:45:21

标签: mysql sql sql-server

我正在使用MySQL,如果我尝试执行子查询,我会收到错误...我的子查询如下:

  

sponsor_id列包含10条带id(自动增量)的记录。

SELECT * FROM user where id=(select id from user where sponsor_id ='10002')

提前致谢

4 个答案:

答案 0 :(得分:5)

使用 IN 代替=。

SELECT * FROM user where id IN (select id from user where sponsor_id ='10002' AND id IS NOT NULL)

答案 1 :(得分:1)

原因是您的子查询很可能返回多个值。如果您使用等于运算符,它应该只返回一个值。

否则将IN子句用作:

SELECT * FROM user where id IN (select id from user where sponsor_id ='10002')

编辑:

您也可以使用INNER JOIN或任何其他JOIN来满足您的目的。

答案 2 :(得分:0)

您收到错误是因为'='将对单​​个值进行操作,而不是对多个值进行操作。因此请使用'IN' opeartor或确保子查询在使用{{1}时仅返回单个值}}

答案 3 :(得分:0)

试试这个

SELECT * FROM user where id IN (select id from user where sponsor_id ='10002')

或:

SELECT * FROM user where id =(select id from user where sponsor_id ='10002' Limit 1)