2013-05-28 24 views
0

好吧我知道這聽起來可能會搞砸了,但mysql有時候通過意想不到的curball我的方式,這是我從來沒有遇到過。mysql重複我的行過夜

因此,我們必須在該表中,你有一個像

Russell 
Smith 
Sam 

突然的,但所有的記錄叫員工 數據庫表我有

Russell 
Russell 
Smith 
Smith 
Smith 
Sam 
Sam 
Sam 

如果有人知道如何解決這個問題沒有,下載全表並手動修復它,並重新上傳,這將是偉大的

+0

不知道爲什麼會發生,不可思議!也許跟你的網絡主機談談吧! – pattyd

+0

你正在執行簡單的SQL嗎? 'select * from table' –

+1

笛卡爾連接涉及僱員表昨天進入代碼的某個時間? – Dallas

回答

0

我的推薦:

(1)創建一個新的臨時表:

create temporary table xxx as 
    select distinct * from employees 

(2)截斷原始表

truncate table employees 

(3)將記錄回

insert into employees 
    select * from xxx 

通過截斷表格,您將保留幾乎所有與之相關的信息 - 安全性,觸發器和約束條件。一個問題可能是一個自動遞增的主鍵。如果你有其中一個(但是如果有主鍵,你不能複製記錄),這可能不起作用。

+0

您也可以手動更正自動增量計數器('ALTER TABLE mytable AUTO_INCREMENT = 500')。 –

1

如果你的表有一個id列,你想保持只有最低id記錄,你可以做

delete from employees 
where id not in 
(
    select * from 
    (
    select min(id) 
    from employees 
    group by name 
    ) x 
) 
+0

。 。我想過這個。但是,如果行被重複,這個ID是不是也會被重複?如果是這樣,這是行不通的。 –