自己在插入數據的時候,剛開始用,然後莫名的插入了兩條數據,想要去除一條保留一條,由此引發了去網上搜索資料的艱難之路。
現在可以看到,我已經插入了兩條一模一樣的記錄。
首先我的想法是把重複的數據給挑出來。
通過上述語句我就把重複的記錄給挑了出來。
現在我準備刪除其中的一條記錄
結果出來了這個錯誤
Error Code: 1093. You can't specify target table 'course' for update in FROM clause
(本人拙劣英語翻譯:你不能在FROM 從句中使你的目標表‘table’具體化)
這是啥意思呢?繼續官方資料。
發現也就是你不能先從同一張表中select某些值然後再對錶結構進行更改的操作(delete,update之類的)
我們可以通過設置一箇中間表來進行過渡。這樣就沒問題了。【參考資料:點擊打開鏈接】
然後繼續思考去除重複的問題,我們要保留的肯定是第一條數據那麼,也就是在重複數據中較上面的那條,所以得想辦法把這個想法表達出來。
delete
from 表 a
where (字段名)
in (select 字段名 from
表 group by 字段名 having
count(*)
> 1) and
ID not in
(select min(ID)
from 表 group
by 字段名 having count(*)>1)
這上面的是通用方法。大家可以借鑑一下。但是得注意mysql不允許子表裏面也用相同的表名。【但是我悲劇了,我是直接插入數據的,也就是
兩條數據連ID都是一模一樣的。然後我就把它們都給刪除了,再插一條麼好了。很尷尬】
希望能幫到大家。