经过多次狩猎后,我不得不问:我想做的就是在群组声明中添加一个字段。我有一个简单的小问题:
SELECT product_id, count(*)
FROM uut_result
WHERE start_date_time = '2016-06-16 00:00:00'
GROUP BY product_id
ORDER BY product_id ASC;
所以,例如,我想:
SELECT product_id, reception_date, count(*)
from uut_result
group by product_id
哪会给我们:
KL2483 2016-07-14 48
就是这样,我想做的就是在select语句中输入一个额外的字段。但是MySQL不会让我拥有两个以上的字段。有没有一种简单的方法来解决这个问题?
答案 0 :(得分:3)
向结果集添加其他列的一种方法是将当前GROUP BY
放入子查询,然后将其重新连接到原始表:
SELECT t1.product_id, t1.reception_date, t2.product_count
FROM uut_result t1
INNER JOIN
(
SELECT product_id, COUNT(*) AS product_count
FROM uut_result
WHERE start_date_time = '2016-06-16 00:00:00'
GROUP BY product_id
) t2
ON t1.product_id = t2.product_id
答案 1 :(得分:0)
您可以使用聚合函数拉入另一个字段:
SELECT product_id, MAX(othercol), count(*)
FROM uut_result
WHERE start_date_time = '2016-06-16 00:00:00'
GROUP BY product_id
ORDER BY product_id ASC;
您的服务器必须设置模式ONLY_FULL_GROUP_BY
(可能通过ANSI
模式)。否则,MySQL将允许SELECT
中的其他列。
答案 2 :(得分:0)
最适合我的答案看起来已被删除。耻辱。为了记录,我可以拥有我需要的额外字段,只要我按它分组:
SELECT age, height, max(goal_average) FROM players
GROUP BY age, height <-- it's this second grouping that allows the height field.
etc.
无论如何,帮助我,我只是希望我可以在它到期的地方给予信任。