2014-10-23 6 views
0

я хочу использовать подзапрос в главном запросе, как следующее:# 1241 - Операнд должен содержать 1 столбец: почему?

SELECT distinct(cnt.crid),cu.companyName,m.*,cnt.*,m.submitDate as mSubmitDate 
from tbl_mahmoleh m,tbl_customer cu,tbl_cntreserve cnt 
where m.cuID=cu.cuID and m.mBLID=cnt.mBLID and m.cuID='12' 
     and (cnt.crID IN (SELECT DISTINCT(crID) FROM tbl_paymentcnt)) 
     and (cnt.crID IN (SELECT pc.crID, SUM(amount) AS PaySum 
         FROM tbl_paymentcnt pc GROUP BY pc.crID HAVING PaySum < '2000')) 
ORDER BY inputDateD 

, но я столкнулся с этой ошибкой

Blockquote # 1241 - Операнд должен содержать 1 колонку (ы)

+0

последний 'ORDER BY' должен быть основного SELECT, однако я не вижу ни одного столбца с именем' inputDateD' в списке выбора? –

+1

Поскольку 'IN' ожидает единственный список (то есть столбец) значений. Двое не имеют смысла. Переместите 'SUM (количество)' в 'WHERE' вместо' HAVING'. –

+0

Возможный дубликат [MySQL - Операнд должен содержать 1 столбец] (http://stackoverflow.com/questions/14046838/mysql-operand-should-contain-1-columns) – jurgemaister

ответ

0

Я получил его, предложение IN не может работать с несколькими полями, я изменил свой запрос на следующий, и моя проблема была решена.

SELECT DISTINCT(cnt.crid),cu.companyName,m.*,cnt.*,m.submitDate AS mSubmitDate 
FROM tbl_mahmoleh m,tbl_customer cu,tbl_cntreserve cnt 
WHERE m.cuID=cu.cuID AND m.mBLID = cnt.mBLID AND m.cuID = '12' 
AND (cnt.crID IN (SELECT DISTINCT(crID) FROM tbl_paymentcnt)) 
AND (cnt.crID IN (SELECT pc.crID FROM tbl_paymentcnt pc GROUP BY pc.crID HAVING SUM(amount) < '2500')) 
ORDER BY inputDateD 
Смежные вопросы