group by语句中的多个字段

时间:2016-06-27 12:10:25

标签: mysql sql

经过多次狩猎后,我不得不问:我想做的就是在群组声明中添加一个字段。我有一个简单的小问题:

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不会让我拥有两个以上的字段。有没有一种简单的方法来解决这个问题?

3 个答案:

答案 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.

无论如何,帮助我,我只是希望我可以在它到期的地方给予信任。