假设我有一个表如下:(在DB2 9.7.2上)
COL1 COL2 COL3
----------- ---------- ----------
3 4 xyz
3 4 xyz
现在我想编写一个查询,以便只删除这两个相同记录中的一个。我怎样才能做到这一点?
我能想到: 从中删除;
或
从col1 = 3;
中删除但上述两个查询都会删除这两个记录,而我想保留其中一个。
答案 0 :(得分:1)
如果LIMIT
不起作用,则会:
DELETE FROM (SELECT * FROM tbl WHERE col = 3 FETCH FIRST ROW ONLY)
答案 1 :(得分:0)
你不能使用限制条款吗?
DELETE FROM <table> WHERE <column>=3 LIMIT 1
答案 2 :(得分:0)
这符合我的目的:
DELETE FROM tabA M
WHERE M.tabAky IN (SELECT tabAky
FROM (SELECT tabAky,
ROW_NUMBER() OVER (PARTITION BY tabAcol1,
tabAcol2,
tabAcoln)
FROM tabA a) AS X (tabAky, ROWNUM)
WHERE ROWNUM> 1) ;
答案 3 :(得分:0)
试试这个
delete from table A (select row_number() over (partition by col1 order by col1 ) count,* from table) where A.count> 1