php - 删除重复记录而不创建临时表

标签 php mysql

我有一个包含很多重复记录的表:

shop
ID     tax_id
1      10
1      10
1      11
2      10
2      12
2      10
2      10

我想在不创建临时表的情况下删除所有重复记录。 更新查询后,该表应如下所示:

shop
ID     tax_id
1      10
1      11
2      10
2      12

最佳答案

这是一个就地解决方案(但不是单行)

找出最大id:

select max(id) as maxid 
  from shop;

记住这个值。假设它等于 1000;

重新插入具有偏移量的唯一值:

insert into shop (id, tax_id) 
select distinct id + 1000, tax_id 
  from shop;

丢弃旧值:

delete from shop
  where id <= 1000;

恢复正常的 ids:

update shop
  set id = id - 1000;

利润!

关于php - 删除重复记录而不创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8590010/

相关文章:

php - 多值插入复选框只有最后一个值正在进入数据库

mysql - 检查用户是否已经注册

java - Android Studio 中名称值对中的内容如何作为参数传递?

mysql - 如何为每个日期行重复一个唯一 ID?

php - Yii 查询生成器嵌套条件

php - 在 PDO 中输出选择查询

php - 你可以在 ORDER BY 中添加 if 语句吗?

php - 如何将多个选定的(通过复选框)行 id 传递给 jQuery 中的 php 脚本?

javascript - Ajax 返回未定义

php - 顶部列表由三个部分组成