2017-01-23 10 views
0

複数のOR文を使用して1つのSQL文でクエリを結合すると、個々のOR文から返されるレコード数は同じ数になりません。誰かに助言してもらえますか?例えば複数のOR条件をSQLで使用する

$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

いくつかの行には2つの条件があります。 –

+1

これについて考えてみましょう:xとyが0の行はありますか?それらは$ sql1、$ sql2、$ sql_totalによってそれぞれ1回だけ返されます。 –

+0

このSQL Fiddleをチェックしてください:http://sqlfiddle.com/#!9/5b72e1/1 3つの列のうちの2つが「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を含める。

関連する問題