我有以下表结构
id dateChanged changeType changeID
其中有以下数据
1 2014-04-01 memEdit 205
2 2014-04-01 memEdit 205
3 2014-03-31 memEdit 1
4 2014-04-01 memEdit 1
5 2014-04-01 memEdit 3
现在我想获取每个更改ID的最新记录。所以我会得到 id 为 2,4,5 的记录。 我尝试过将它们分组,但它给了我每组的第一个(所以我得到了 1,3,5)
最佳答案
1。旧的不工作查询
<罢工>罢工>
<罢工>SELECT * FROM `your_table`
GROUP BY `changeID`
ORDER BY `id` DESC
罢工><罢工>罢工>
2。工作查询
问题在于 MySQL 的非标准疯狂。
MySQL 不会强制你GROUP BY
SELECT
中包含的每一列列表。因此,如果您仅GROUP BY
一列但总共返回 4 列,不保证其他列值属于分组 changeID
返回的记录。如果该列不在 GROUP BY
中MySQL 选择应返回什么值。
使用子查询将保证每次都返回正确的记录值。
正确的是working query将是:
SELECT `t`.* FROM(
SELECT * FROM `smdbs_app`
ORDER BY `id` DESC
) `t`
GROUP BY `changeID`
ORDER BY `id`
关于mysql - 获取组内最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797667/