删除 GROUP BY 后,MySQL 查询返回的结果较少

标签 mysql group-by

我在处理包含 GROUP BY 的查询时遇到问题。作为诊断的一部分,我删除了 GROUP BY 语句以查看原始数据 - 但是当我这样做时,我返回了 FEWER 行,这是我使用 GROUP BY 所做的。

重现:

CREATE TABLE `test1` (
  `date` bigint(20) DEFAULT NULL,
  `quantity` int(11) DEFAULT NULL,
  `processed` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO `test1` VALUES (1312483084,3,2),(1312483084,1,2),(1312483148,1,2),(1312483148,1,2),(1314038654,1,2),(1314301805,1,2);

现在运行我原来的 SELECT(完成 GROUP BY):

SELECT DATEDIFF(from_unixtime(test1.date), from_unixtime(1311801510)) DIV 28 AS date_idx,
min(DATEDIFF(from_unixtime(test1.date), from_unixtime(1311801510))) AS orig_date_idx,            SUM(test1.quantity) AS num_items,
IF(test1.processed in (2,3,4), 'Complete','Pending') as status
FROM test1
GROUP BY status, date_idx \G

您应该返回两行:

*************************** 1. row ***************************
     date_idx: 0
orig_date_idx: 8
    num_items: 7
       status: Complete
*************************** 2. row ***************************
     date_idx: 1
orig_date_idx: 29
    num_items: 1
       status: Complete

现在删除 GROUP BY,即:

SELECT DATEDIFF(from_unixtime(test1.date), from_unixtime(1311801510)) DIV 28 AS date_idx,
min(DATEDIFF(from_unixtime(test1.date), from_unixtime(1311801510))) AS orig_date_idx,            SUM(test1.quantity) AS num_items,
IF(test1.processed in (2,3,4), 'Complete','Pending') as status
FROM test1

突然之间,您只返回一行 - 原始结果中 date_idx == 1 的行已合并到 date_idx == 0 的条目中

*************************** 1. row ***************************
     date_idx: 0
orig_date_idx: 8
    num_items: 8
       status: Complete

感谢收到所有想法!

最佳答案

坦率地说,令我惊讶的是,它运行时并没有因为使用没有分组依据的聚合函数而给您一个错误,这可能与您的所有字段都是计算值这一事实有关。无论如何,摆脱所有聚合函数以获取基础数据。

关于删除 GROUP BY 后,MySQL 查询返回的结果较少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197682/

相关文章:

mysql - 在 MySQL 中使用 Case 加入 Group By 和 Order

r - Dplyr:同时汇总组和整个数据

javascript - 用户 "admin"登录时显示编辑按钮

java - Android:如何在应用程序中使用外部 MySQL 数据库

mysql - SQL元表帮助(mysql)

mysql - 具有 3 个左连接的慢速 Mysql 查询

Mysql查询统计多个表的数据并显示0为空值

json - Mongolite 分组依据/聚合 JSON 对象

javascript - 如何在javascript中动态按数组值进行分组

mysql - Rails 3 - ActiveRecord 和反向排序