2011-03-22 5 views
1

다음 쿼리를 실행하고 "Subquery가 둘 이상의 행을 반환합니다."라는 오류가 나타납니다.서브 쿼리는 mysql에서 1 행 이상을 리턴한다.

내 쿼리는

입니다.
SELECT pkTicketID, 
     TicketReplyDateAdded, 
     TIMESTAMPDIFF(DAY, TicketReplyDateAdded, now()) as NumberOfDays 
    FROM tickets as T 
    LEFT JOIN ticket_replies as TR ON T.fkTicketReplyID=TR.pkTicketReplyID 
    WHERE 1 AND T.fkEmployeeID = '4' 
    AND (SELECT TIMESTAMPDIFF(DAY, TicketReplyDateAdded, now()) as NumberOfDays 
      FROM tickets as T 
      LEFT JOIN ticket_replies as TR 
       ON T.fkTicketReplyID=TR.pkTicketReplyID 
     ) = 7 
    AND T.TicketStatus = 'Replied' 
    ORDER BY pkTicketReplyID DESC 

도움을 주셔서 감사합니다. 우마르

답변

2

이 같은 단 하나의 행을 반환하는 하위 쿼리를 제한하여이 오류를 수정할 수 있습니다

SELECT pkTicketID,TicketReplyDateAdded, 
     TIMESTAMPDIFF(DAY, TicketReplyDateAdded,now()) as NumberOfDays 
FROM tickets as T 
     LEFT JOIN ticket_replies as TR 
     ON T.fkTicketReplyID=TR.pkTicketReplyID 
WHERE 1 
AND T.fkEmployeeID = '4' 
AND (SELECT TIMESTAMPDIFF(DAY, TicketReplyDateAdded, now()) as NumberOfDays 
     FROM tickets as T LEFT JOIN ticket_replies as TR 
     ON T.fkTicketReplyID=TR.pkTicketReplyID 
     LIMIT 1) = 7 
AND  T.TicketStatus = 'Replied' 
ORDER BY pkTicketReplyID DESC 

(추가 'LIMIT 1')

0

음이 발생합니다.

0

한 가지 방법은 하위 쿼리에 LIMIT 1를 추가하는 것입니다. 또 다른 방법은 하위 쿼리가 둘 이상의 행을 논리적으로 반환 할 수 있어야하는지, 그렇지 않으면 수정해야 하는지를 파악하는 것입니다.

관련 문제