2013-07-16 49 views
0

基本上我有這個疑問DELETE FROM與LIMIT不工作 - 錯誤1064

SELECT * 
FROM `transactions` a 
WHERE Round((tender1 - `change`), 2) != (SELECT Round(Sum(total), 2) 
              FROM `transactions` b 
              WHERE b.trans_no = a.trans_no) 
     AND tender1 != 0 
LIMIT 1 

這是罰款,並返回一個單一的線,但如果我改變了語句刪除

DELETE FROM `transactions` a 
WHERE Round((tender1 - `change`), 2) != (SELECT Round(Sum(total), 2) 
              FROM `transactions` b 
              WHERE b.trans_no = a.trans_no) 
     AND tender1 != 0 
LIMIT 1 

這將返回錯誤1064無效語法

任何想法???

+1

因爲它沒有任何意義。你怎麼知道哪一行是第一行,並且你不會刪除任何符合條件的任意行? –

+0

基本上這個查詢標記爲我的任何重複的記錄(刪除選擇語句的限制1),我不明確關心哪一個我刪除,只要我刪除其中一個:) – JazziJeff

回答

0

我不知道爲什麼你的LIMIT有,但我認爲,如果你想刪除的任意行這樣的工作:

DELETE FROM `transactions` WHERE id IN (
    SELECT id FROM `transactions` a 
    WHERE ROUND((TENDER1 - `CHANGE`),2) != (SELECT ROUND(SUM(TOTAL),2) 
              FROM `transactions` b 
              WHERE b.trans_no = a.TRANS_NO) 
    AND TENDER1 != 0 
    LIMIT 1 
) 
+0

問題是這個表沒有唯一的ID對於每一行(不是我的設計!!)所以它有點尷尬:( – JazziJeff

+0

哦,廢話!真的嗎?:S – MISJHA