2017-08-10 64 views
0

我正在運行查詢以刪除重複的條目。它在沒有LIMIT語句的情況下工作,但會重載服務器。我想用LIMIT語句批量處理它。MySQL DELETE加入獲取語法錯誤與LIMIT語句

DELETE t1 
FROM data as t1 
join data as t2 
WHERE t1.type = t2.type 
AND t1.timestamp = t2.timestamp 
LIMIT 100 

並與LIMIT語句收到錯誤:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIMIT 100' at line 6

回答

1

你不能direcly使用限制在刪除您可以在選定的

DELETE data 
    FROM data as t1 
    join (
     select distinct type, timestamp from data limit 100 
) t2 on t1.type = t2.type AND t1.timestamp = t2.timestamp 
+0

這並不完全相同的行爲。在我的,如果限制工作,它將是100發現重複。這個版本需要很多後端支持來正確處理所有記錄,同時處理刪除的記錄。 – RobC

+0

如果你不需要重複..使用不同的..在子選擇...答案更新..所以你刪除100沒有重複..值 – scaisEdge

0

多表DELETE使用, UPDATE不允許有LIMIT條款。這是錯誤信息的原因。解決方法...

要做大規模DELETEs(或UPDATEs),以塊爲單位循環瀏覽表。 This討論細節。爲了提高效率,它使用PRIMARY KEY,以便在桌子上走動效率高。