gpt4 book ai didi

MySQL 根据 DISTINCT 值对多行进行分组

转载 作者:行者123 更新时间:2023-11-29 01:37:09 24 4
gpt4 key购买 nike

我需要显示一个表(结果)中的最后 2 个结果,结果由几行匹配的 submissionId 组成,每次提交的行数未知,当然我更喜欢单个查询。

这是数据库表结构

submissionId     input       value

1 name jay
1 phone 123-4567
1 email test@gmail.com
2 name mo
2 age 32
3 name abe
3 email abe@gmail.com
4 name jack
4 phone 123-4567
4 email jack@gmail.com

期望的结果:

submissionId     input       value

3 name abe
3 email abe@gmail.com
4 name jack
4 phone 123-4567
4 email jack@gmail.com

或者更好,如果我可以像这样组合行:

3           name         abe    3       email        abe@gmail.com
4 name jack 4 phone 123-4567 4 email jack@gmail.com

最佳答案

此处的一个选项是使用子查询来识别最近和紧随其后的 submissionId:

SELECT submissionId, input, value
FROM yourTable
WHERE submissionId >= (SELECT MAX(submissionId) FROM yourTable) - 1
ORDER BY submissionId

此处演示:

SQLFiddle

更新:

如果您的 submissionId 列确实是日期类型,并且您希望结果集中有最近的两个日期,那么以下查询将实现这一点。请注意,WHERE 子句中的子查询虽然丑陋,但与外部查询不相关。这意味着 MySQL 优化器应该能够弄清楚它只需要运行一次。

SELECT submissionDate, input, value
FROM yourTable
WHERE submissionDate >=
(SELECT MAX(CASE WHEN submissionDate = (SELECT MAX(submissionDate) FROM yourTable)
THEN '1000-01-01'
ELSE submissionDate
END) FROM yourTable)
ORDER BY submissionDate

SQLFiddle

关于MySQL 根据 DISTINCT 值对多行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com