【发布时间】:2017-06-22 17:24:42
【问题描述】:
我试图在不禁用 my.ini 中的“only_full_group_by”的情况下弄清楚
这是我的查询:
SELECT
p.title,
COUNT(t.qty) AS total
FROM
payments t
LEFT JOIN products AS p
ON p.id = t.item
WHERE t.user = 1
GROUP BY t.item
ORDER BY t.created DESC;
和表格:
付款:
id item user created
============================
1 1 1 2017-01-10
2 2 1 2017-01-11
3 3 1 2017-01-12
4 4 1 2017-01-13
5 1 1 2017-01-14
产品:
id title created
==========================
1 First 2016-12-10
1 Second 2016-12-11
1 Third 2016-12-12
1 Fourth 2016-12-13
最终的结果应该看起来是谎言:
Name Total
First 2
Second 1
Third 1
Fourth 1
但是,如果我将查询更改为 GROUP BY t.item, t.created 错误就消失了,但我最终得到了 5 条记录而不是 4 条记录,这不是我想要的。由于我是根据“项目”字段对项目进行分组,所以应该只有四个记录
【问题讨论】:
-
为什么要算
t.qty?使用products上的外连接,您应该计算products中的一列,例如COUNT(p.id),以便在没有匹配的情况下计数为零。 -
我想
products表中的 ID 真的是 4-3-2-1 而不是 1-1-1-1? (所以“第一”是第 4 项,它在payments中具有最新的created日期,因此在通过t.created DESC订购时排在第一位,如您在所需结果中所示。)
标签: mysql sql group-by mysql-error-1055