国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql怎么刪除重復數據

2024-07-24 12:33:45
字體:
來源:轉載
供稿:網友
  這篇文章主要講解了“mysql怎么刪除重復數據”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql怎么刪除重復數據”吧!
 
  sku對應的重量表,應該一個sku_id 對應唯一 一條重量數據,由于程序錯誤導致出現一樣的冗余數據。只保留一條,其他的刪除。
 
  字段 說明
  id 自增
  sku_id sku_id標識
  weight 重量
  假設表名:weight
 
  查詢有重復數據的列表
 
  SELECT sku_id,COUNT(id) FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1
  查詢重復數據里面每個最小的id
 
  SELECT min(id) FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1
  查詢去掉重復數據最小id的其他數據
 
  SELECT id,sku_id FROM weight WHERE sku_id IN(
      SELECT sku_id FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)AND id NOT IN(
      SELECT MIN(id) FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)
  刪除去掉重復數據最小id的其他數據
 
  DELETE FROM weight WHERE sku_id IN(
      SELECT sku_id FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)AND id NOT IN(
      SELECT MIN(id) FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)
  原因是:刪除這個表的同時又查詢了這個表,查詢這個表的同時又去刪除了這個表,可以理解為死鎖。mysql不支持這種刪除查詢同一張表的操作
 
  錯誤代碼: 1093You can't specify target table 'weight' for update in FROM clause
  解決辦法如下:把要刪除的數據查詢出來做為一個第三方表,然后篩選刪除。
 
  DELETE FROM `weight` WHERE sku_id IN(
      SELECT sku_id FROM (SELECT sku_id FROM `weight` GROUP BY sku_id HAVING COUNT(sku_id) > 1) table1)AND id NOT IN (
      SELECT id FROM (SELECT MIN(id) AS id FROM `weight` GROUP BY sku_id HAVING COUNT(sku_id) > 1) table2)
  更新也和上面操作原理相同。
 
  感謝各位的閱讀,以上就是“mysql怎么刪除重復數據”的內容了,經過本文的學習后,相信大家對mysql怎么刪除重復數據這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀宁县| 杨浦区| 肥城市| 宜州市| 高唐县| 灵璧县| 汤原县| 望城县| 沾益县| 安庆市| 贵德县| 佛山市| 巢湖市| 迁安市| 唐河县| 博野县| 潢川县| 水富县| 邵阳县| 华池县| 海城市| 金乡县| 大理市| 腾冲县| 长垣县| 吉首市| 建水县| 淄博市| 霍邱县| 洛川县| 南岸区| 法库县| 得荣县| 襄樊市| 邯郸市| 香河县| 黄平县| 吉隆县| 襄樊市| 交城县| 永寿县|