2017-01-23 35 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小提琴:http://sqlfiddle.com/#!9/5b72e1/1。如果您运行此查询或者如果您计算具有3个单数查询的行数,那么让三列中的两列等于'0'不会改变任何内容。 –

回答

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作进一步调查。