【问题标题】:Using multiple OR conditionals in SQL在 SQL 中使用多个 OR 条件
【发布时间】: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 不会改变任何内容。

标签: php mysql


【解决方案1】:

您可能对此查询的结果感兴趣:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2021-02-20
    • 2017-06-11
    相关资源
    最近更新 更多