2016-12-03 1 views
0

하위 쿼리를 사용하여 내 청구서 테이블에 대한 쿼리를 수행하기 위해 Doctrine with Zend Framework 2를 사용하고 있습니다. 여기 MySQL이 작동하지 않는 곳

SELECT * 

FROM invoices i1 

WHERE (EXISTS (SELECT * FROM invoices i2 WHERE i2.invoice_first_name IN ('stephen') OR i2.invoice_middle_name IN ('stephen') OR i2.invoice_surname IN('stephen'))) 

ORDER BY i1.invoice_id DESC 

채워 매개 변수를 사용하여 간단하게 생성 된 SQL의 오전 데 문제는 내가 그것도 모든 송장, 이름이 '스티븐를 포함하지 않는 사람들을 반환하면 phpMyAdmin이 쿼리를 실행할 때 '.

그러나 하위 쿼리를 별도로 실행하면 올바른 2 행을 반환합니다.

SELECT * FROM invoices i2 WHERE i2.invoice_first_name IN ('stephen') OR i2.invoice_middle_name IN ('stephen') OR i2.invoice_surname IN('stephen') 

는 왜 EXISTS와 하위 쿼리 작업, 나는 무엇을 놓치고하지 않는 이유는 무엇입니까?

미리 감사드립니다. MySQL documentation 당으로

답변

0

:

하위 쿼리가 전혀 행을 반환하는 경우, 서브 쿼리가 TRUE 존재하고 아닌 하위 쿼리는 일부 행을 반환하기 때문에 하위 쿼리

FALSE입니다 EXISTS where 절이 true 인 경우 - 인 경우 모든 행이 송장 테이블에 있습니다.

관련 문제