26、临时表的创建和重复数据的处理
?
UPDATE student b SET b.sname = 'dd' WHERE b.id = (SELECT a.id FROM student a WHERE a.id = '3')
Mysql中根據(jù)條件(表A中的字段)操作表A中的數(shù)據(jù)時是不可以的
所以借助臨時表來刪除/更新重復的數(shù)據(jù),原理就是刪除每組重復數(shù)據(jù)中除id值最大的其他記錄
select id,name from student
1、根據(jù)特定條件查詢出每組重復數(shù)據(jù)中id最大的一條記錄
SELECT MAX(id) id,name FROM student GROUP BY name HAVING COUNT(name) > 1
????????
2、將id值和查重條件添加到臨時表maxids
Create table maxids
SELECT MAX(id) id,name FROM student GROUP BY name HAVING COUNT(name) > 1
3、根據(jù)查重條件查詢出重復數(shù)據(jù)中id值不為最大id的所有記錄的id,此處一定要注意使用去重條件去查詢,不然會將其他不重復的數(shù)據(jù)查詢出來
SELECT id FROM student a
WHERE EXISTS ( SELECT id FROM maxids WHERE a.id != id AND a.name = `name`)
4、將3中查出的記錄添加到臨時表repeatids
Create table repeatids
SELECT id FROM student a
WHERE EXISTS ( SELECT id FROM maxids WHERE a.id != id AND a.name = `name`)
5、根據(jù)臨時表repeatids中的id值刪除重復數(shù)據(jù)
Delete from student where id in (select id from repeatids)
6、刪除臨時表
Drop table maxids
Drop table repeatids
7、去重之后結果
select id,name from student
?
?
總結
以上是生活随笔為你收集整理的26、临时表的创建和重复数据的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米预热首批“超薄全嵌”家电:包含嵌入式
- 下一篇: 1、java简介