2017-01-23 1 views
0

여러 OR 문을 사용하여 하나의 SQL 문에서 쿼리를 결합 할 때 개별 OR 문에서 반환하는 레코드 수는 동일한 레코드 수를 반환하지 않습니다. 제발 누군가 조언 할 수 있니? 예를 들어SQL에서 다중 OR 조건 사용

:

$sql1 = SELECT * FROM table_1 WHERE x = '0'; 
$sql2 = SELECT * FROM table_1 WHERE y = '0'; 
$sql3 = SELECT * FROM table_1 WHERE z = '0'; 

결합 된 쿼리

$sql_total = SELECT * FROM table_1 WHERE x='0' OR y='0' OR z = '0'; 

내가 sql_total에서 돌아 오기 기록의 수는 SQL1에 의해 반환 된 레코드 수를 추가하여 반환 결합 된 기록과 다른 , sql2 및 sql3이 결합되었습니다. 내가 어디로 잘못 가고 있니?

+5

일부 행에는 두 가지 조건이 있습니다. –

+1

그것에 대해 생각해보십시오 : x와 y가 0 인 행이 있습니까? $ sql1, $ sql2 및 $ sql_total에 의해 각각 정확히 한 번씩 반환됩니다. –

+0

이 SQL Fiddle : http://sqlfiddle.com/#!9/5b72e1/1을 확인하십시오. 세 개의 열 중 두 개가 '0'인 경우이 쿼리를 실행하거나 3 개의 단일 쿼리로 행 수를 계산하면 아무 것도 바뀌지 않습니다. –

답변

2

이 쿼리의 결과에 관심이있을 수 있습니다

select (x = '0') as xzero, (y = '0') as yzero, (z = '0') as zzero, count(*), 
     min(id), max(id) 
from t 
group by (x = '0'), (y = '0'), (z = '0'); 

이것은 당신이 많은 행이 진실되고 조건의 다른 조합이이 표시됩니다. 추가 조사를 위해 id을 포함합니다.