mysql查找重复记录中指定最大(最小)值
在有多条字段重复记录的表中,经常需要查询重复记录中的最大,最小值。1.直接使用max()函数,例子是获取最大的id测试表结构:`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`role_id` int(10) unsigned NOT NULL,`user_id` int(10) unsigned NOT NULL,PRIM
·
在有多条字段重复记录的表中,经常需要查询重复记录中的最大,最小值。
1.直接使用max()函数,例子是获取最大的id
测试表结构:
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`role_id` int(10) unsigned NOT NULL,
`user_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
SELECT
max(id)
FROM
test
GROUP BY
role_id
2.可以用表自连接实现
SELECT
*
FROM
test
WHERE
id NOT IN (
SELECT
t.id
FROM
test t
JOIN test e ON t.role_id = e.role_id
WHERE
t.id > e.id
GROUP BY
t.id
)
tips:假如需要删除,不能直接删除自己select出来的结果,可以用别名如下:
DELETE
FROM
test
WHERE
id IN (
SELECT
m_id
FROM
(
SELECT
max(id) AS m_id
FROM
test
GROUP BY
role_id
) b
)
更多推荐
已为社区贡献2条内容
所有评论(0)