mysql删除重复数据只保留id最大一条记录
2017-04-20 10:17
597 查看
一:首先是这么想的
DELETE
FROM
t_4g_phone
WHERE
id NOT IN (
SELECT
max(b.id) AS id
FROM
t_4g_phone b
GROUP BY
b.SERIAL_NUMBER
)
发现在mysql中会报错
错误信息:[Err] 1093 - You can't specify target table 't_4g_phone' for update in FROM clause
于是查资料说是不能先select出同一表中的某些值,再update这个表(在同一语句中)
二:正确写法
DELETE
FROM
t_4g_phone
WHERE
id NOT IN (
SELECT
id
FROM
(
SELECT
max(b.id) AS id
FROM
t_4g_phone b
GROUP BY
b.SERIAL_NUMBER
) b
)
也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题
DELETE
FROM
t_4g_phone
WHERE
id NOT IN (
SELECT
max(b.id) AS id
FROM
t_4g_phone b
GROUP BY
b.SERIAL_NUMBER
)
发现在mysql中会报错
错误信息:[Err] 1093 - You can't specify target table 't_4g_phone' for update in FROM clause
于是查资料说是不能先select出同一表中的某些值,再update这个表(在同一语句中)
二:正确写法
DELETE
FROM
t_4g_phone
WHERE
id NOT IN (
SELECT
id
FROM
(
SELECT
max(b.id) AS id
FROM
t_4g_phone b
GROUP BY
b.SERIAL_NUMBER
) b
)
也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题
相关文章推荐
- mysql删除重复记录只保留一条数据
- MySQL删除重复数据 并保留ID最大值
- Mysql删除重复记录,保留id最小的一条
- Mysql删除重复记录,保留id最小的一条
- SQL针对单列删除重复数据只保留一条id最大的数据
- mysql 创建唯一索引前 删除重复数据只保留ID最小一条。
- mysql 创建唯一索引前 删除重复数据只保留id最小一条。
- MySQL下删除重复记录只保留一条数据
- mysql 删除重复数据只保留一条记录
- 关于mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句理解
- MYSQL 删除重复记录,只保留最大ID
- mysql删除重复数据只保留一条
- sql 多个字段分组,删除重复记录,保留ID最小的一条
- MySQL删除重复记录只保留一条
- Oracle查询重复数据并删除,只保留一条记录
- mysql 查找重复的字段,并删除记录只保留一条
- Oracle查询重复数据并删除,只保留一条记录
- Oracle删除重复记录只保留一条数据的几种方法
- MySQL删除重复记录只保留一条
- mysql 删除表中的重复记录,只保留其中一条