與其他形式的雙項我有表像我怎麼能刪除不同的列
rowsid source_row same_as_row
row1 1 18
row2 3 18
row3 18 1
row4 18 3
我只想elimate的rows3和ROW4:
row3 18 1
row4 18 3
哪個查詢!刪除查詢ROW3和ROW4。幫助
與其他形式的雙項我有表像我怎麼能刪除不同的列
rowsid source_row same_as_row
row1 1 18
row2 3 18
row3 18 1
row4 18 3
我只想elimate的rows3和ROW4:
row3 18 1
row4 18 3
哪個查詢!刪除查詢ROW3和ROW4。幫助
DELETE FROM table
GROUP BY sourcerow
HAVING COUNT(*) > 1
它應該這樣做,假設你只有在sourcerow
列尋找重複值
錯誤的sql,我不想要eleminate widht count(*)> 1,我想elenateate duplicata betweenn source_row same_as_row – schweinsteiger
@AbdelillahFarka:所以如果有行數count(*)same_as_row> 1 delete id在那裏描述? – genesis
不會倒下,因爲問題仍不清楚。但是,鑑於OP想要刪除的示例行,此查詢看起來不正確。 – JohnFx
編輯:井噴我失望(前面的答案被刪除)
由於雙重嵌套的作品,這是我做的方式(即使它的一部分是從邏輯的觀點來看高度冗餘)
DELETE
yourTable
FROM
yourTable
INNER JOIN
(SELECT * FROM (SELECT same_as_row FROM yourTable GROUP BY same_as_row)) as lookup
ON lookup.same_as_row = yourTable.source_row
WHERE
source_row > same_as_row
您可以使用子查詢。你只需要將它嵌套到派生表中即可。 –
@MartinSmith:根據編輯?如果是這樣,爲什麼它工作?與範圍有關?或者因爲最深的子查詢不相關? – MatBailie
[在此處解釋](http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/)。派生表隱式地物化到臨時表中。 –
select
rowsid, source_row, same_as_row
from tablename t1
where not exists
(
select * from tablename t2
where t2.source_row = t1.same_as_row and t2.same_as_row = t1.source_row and t1.rowsid > t2.rowsid)
)
覺得你很尷尬。 – schweinsteiger
DELETE FROM表 GROUP BY rowsid,source_row,same_as_row HAVING COUNT(*)> 1
怎麼你的數據最終得到複製?似乎刪除是一個好主意,但是它阻止了重新生成? (我們還需要更多的信息,比如你如何判斷哪一行優先?) –
你能爲你真正想做的事情做一個真實的例子嗎?是你的桌子嗎? –
什麼RDBMS請? – gbn