【发布时间】:2017-06-07 22:23:32
【问题描述】:
当我使用多个 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 组合返回的记录数相加返回的组合记录数不同。我哪里错了?
【问题讨论】:
-
有些行有两个条件为真。
-
想一想:有没有 x AND y 为 0 的行?这些将由 $sql1、$sql2 和 $sql_total 分别返回一次。
-
查看这个 SQL Fiddle:sqlfiddle.com/#!9/5b72e1/1。如果您运行此查询或计算 3 个单项查询的行数,则三列中的两列等于
0不会改变任何内容。