2013-09-28 6 views
4

Я пытаюсь выполнить этот QUERY и возвращать эту странную ошибку. Что это значит?Ошибка # 1241 - Операнд должен содержать 1 столбец

Вот мой запрос:

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'))) 
+1

Что такое «странная ошибка» ...? – TheWolf

+7

@ TheWolf: Я бы поставил под угрозу «Ошибка # 1241 - Операнд должен содержать 1 столбец *». – eggyal

ответ

11

Ваши подзапросов, которые SELECT *, возвращающиеся более одного столбца; тогда как для IN() требуется ровно один столбец для возврата.

+0

Отлично, спасибо! – superTramp

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 являются столбцы, которые вы хотите связать с другой таблицей.

Смежные вопросы