mysql - SQL查询给出错误结果

标签 mysql sql

当我运行以下查询时,它只显示 1 行。基于“created_date”条件,如果我删除“created_date”条件并仅保留“status_change_date”条件,它会显示 3 行。

我想查看在指定时间内创建或修改的所有项目。我找不到查询中的问题

`SELECT DISTINCT products.id AS product, status.id AS stat, COUNT(*) AS total FROM items 
      INNER JOIN products ON (items.fk_product_id = products.id) 
      INNER JOIN status ON (items.fk_status = status.id) 
      WHERE DATE(items.status_change_date) BETWEEN '2011-04-13' AND '2011-05-13' 
      OR DATE(items.created_date) BETWEEN '2011-04-13' AND '2011-05-13' 
      AND status.id = 2 
      GROUP BY products.name, status.name order by products.name`

最佳答案

我感觉条件正在被这样评估

status_change_date or (created_date and status.id = 2)

您可以尝试使用括号来指定您的条件分组

( DATE(items.status_change_date)... OR DATE(items.created_date)... )
    AND status.id = 2

关于mysql - SQL查询给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995180/

相关文章:

mysql - 根据 mySQL 中的有效起始日期查找具有今天有效价格的行

mySQL - 使用返回多行的选择更新多列

mysql - 对两个表的 SQL 更新查询

sql - 数据库和函数式编程矛盾吗?

mySQL高效统计表

php - MySQL 返回结果与字符串输入类似但没有句点

php - 为什么 Json 无法识别 MySQL 计算值/列?

sql - Oracle Reyclebin 不释放空间

mysql - 具有多个条件的单列 SQL 过滤

mysql - SQL 内连接结果不正确