与其他形式的双项我有表像我怎么能删除不同的列
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