1
我有一個mysql數據庫,其中包含一個包含以下列的表:PartCode,Price和Quantity。目標是編寫一個查詢,查詢具有重複「PartCode」的行,然後通過價格和數量進行比較,並刪除具有較高「價格」值的行,但如果其中一個「數量」爲0,則爲刪除0數量的那個。mysql按列A搜索重複項並按其他條件刪除
A sample table would look like this:
PartCode - Price - Quantity
ABCD - 5 - 2
CDEF - 6 - 1
CDEF - 4 - 1
VZXY - 8 - 4
VZXY - 7 - 0
.... - ... - ...
And for the results, I'd like to get this:
PartCode - Price - Quantity
ABCD - 5 - 2
CDEF - 4 - 1
VZXY - 8 - 4
.... - ... - ...
我已經找到了解決方案,以獲得所有重複PartCodes:
SELECT `PartCode` FROM `Table` GROUP BY `PartCode` HAVING COUNT(*) > 1
我想不出什麼,是如何實現它來刪除重複的一個,其他欄目比較。
在此先感謝。
感謝您的快速回復,但作爲初學者,我有一些後續。首先,我在第一個't1'出現錯誤,我不完全明白。其次,從我所瞭解的情況來看,具有數量的「CASE WHEN」部分選擇了較高的數量,我最終將這些重複行的結果合併爲一個,而我正在尋找刪除該行,而不符合我的標準(這我沒有在我原來的問題中澄清)。第三,如果將來我會有兩個以上的副本,邏輯應該如何改變?再次感謝! – Paulius
@Paulius艱難的查詢,我的第一種方法是錯誤的,請嘗試我的更新。 –
因此,經過幾次嘗試,我刪除了「t1」,並發現SQL提供了一個錯誤,因爲我想從第8行中稍後調用的同一個「yourTable」中刪除。當我在第2行中更改「yourTable」時,到另一個表,並且只在第8行中引用「yourTable」,它就通過了。有什麼辦法可以解決這個問題嗎?或者我應該創建一個重複的表,只是爲了執行這個查詢?我得到的錯誤是這樣的:「#1093 - 你無法在FROM子句中指定目標表'MergedData'進行更新」 – Paulius