MySQL - 如何 select 按日期分组的第一个字符串
MySQL - How to select first string in group by clause by date
鉴于此交易 table
ID Date Name Stat1
1 1 a 1
1 2 b 1
1 3 c 1
2 4 d 1
2 5 e 1
我想按 ID 对记录进行分组,并让每个组 ID 的列 'Name' 按日期显示姓氏,因为它出现在 table 中(日期中的高数字是按时间顺序排列的)最后的)。最终结果:
ID Date Name Stat1
1 3 c 3
2 5 e 2
不幸的是这段代码:
Select ID,Date,Name,sum(Stat1)
From myTable
Group by ID
会生成"random"名字,
我如何在每个组 (ID) 中强制选择 first/last 记录名称(按日期)?
谢谢
您可以使用这样的查询来完成。
如果您想要组的第一行或最后一行,请将最小值更改为最大值:
SELECT
result.id,
result.mdate,
mt.name,
result.stat1
FROM (
Select
ID,
min(date) mdate,
sum(Stat1) as stat1
From myTable
Group by ID
) AS result
LEFT JOIN myTable mt
ON mt.id = result.id
AND mt.date = result.mdate;
鉴于此交易 table
ID Date Name Stat1
1 1 a 1
1 2 b 1
1 3 c 1
2 4 d 1
2 5 e 1
我想按 ID 对记录进行分组,并让每个组 ID 的列 'Name' 按日期显示姓氏,因为它出现在 table 中(日期中的高数字是按时间顺序排列的)最后的)。最终结果:
ID Date Name Stat1
1 3 c 3
2 5 e 2
不幸的是这段代码:
Select ID,Date,Name,sum(Stat1)
From myTable
Group by ID
会生成"random"名字,
我如何在每个组 (ID) 中强制选择 first/last 记录名称(按日期)?
谢谢
您可以使用这样的查询来完成。
如果您想要组的第一行或最后一行,请将最小值更改为最大值:
SELECT
result.id,
result.mdate,
mt.name,
result.stat1
FROM (
Select
ID,
min(date) mdate,
sum(Stat1) as stat1
From myTable
Group by ID
) AS result
LEFT JOIN myTable mt
ON mt.id = result.id
AND mt.date = result.mdate;