国产探花免费观看_亚洲丰满少妇自慰呻吟_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怎么刪除重復數據這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿拉善右旗| 宾阳县| 永仁县| 渝北区| 禄丰县| 樟树市| 洞头县| 深泽县| 滕州市| 麟游县| 泊头市| 无极县| 响水县| 兴业县| 蓬溪县| 佛冈县| 铜鼓县| 扶风县| 桐梓县| 上饶市| 彰武县| 玛多县| 丰都县| 营口市| 乌拉特前旗| 肥乡县| 信宜市| 东丽区| 岳阳县| 息烽县| 樟树市| 宝坻区| 揭西县| 星座| 克什克腾旗| 渭南市| 浙江省| 文成县| 苏尼特左旗| 任丘市| 中西区|