错误#1241 - 操作数应包含1列

时间:2013-09-28 15:41:14

标签: php mysql sql database

我正在尝试此QUERY,并返回此奇怪的错误。这是什么意思?

这是我的问题:

SELECT * FROM newRowP a WHERE a.rowId IN 
(SELECT * FROM newCellP b WHERE b.cellId IN 
(SELECT * FROM newproviderP c WHERE c.pId IN ('3000344','245')))

2 个答案:

答案 0 :(得分:11)

您的子查询SELECT *正在返回多个列;而IN ()只需要返回一列。

答案 1 :(得分:0)

子查询中只应该从SELECT语句的结果返回一列。例如

SELECT * 
FROM newRowP a 
WHERE a.rowId IN (SELECT colName FROM newCellP b .....)

但使用IN的更好方法是JOIN表格。

SELECT  DISTINCT a.*
FROM    newRowP a
        INNER JOIN newCellP b
            ON a.rowID = b.colName
        INNER JOIN newProviderP c
            ON b.cellID = c. colName
WHERE   c.pid IN ('3000344','245')

其中colname是您要与其他表关联的列。