1

first row's code column 如果等于second rows number column并且second rows' code column 等于,如何删除一行first row's number column

sql不能使用循环

将此用作示例代码

CREATE TABLE #temp(id int, code int, Number int)

Insert into #temp values(1,2,1)
Insert into #temp values(2,1,2)
Insert into #temp values(3,2,3)
Insert into #temp values(4,2,3)
Insert into #temp values(5,2,3)

select * from #temp
4

3 回答 3

1

由于您没有指定您使用的 RDBMS。让我假设它是 SQL Server,那么你可以这样做:

;WITH CTE
AS
(
   select * , ROW_NUMBER() OVER(ORDER BY ID) rownum
    from temp
), RowsToDelete
AS(
    SELECT c1.*
    FROM CTE c1
    INNER JOIN CTE c2 ON c1.rownum - c2.rownum = 1 AND c1.number = c2.code
)
DELETE r
FROM temp r
WHERE ID IN  ( SELECT ID 
               FROM RowsToDelete);

对于示例数据,您发布的这将仅删除一行,即:

ID     CODE    NUMBER 
2       1        2     

SQL 小提琴演示

于 2012-12-04T09:52:46.510 回答
0

删除 t1

从#temp t1

在哪里存在(

从#temp t2中选择*

其中 t1.code = t2.Number 和 t2.code = t1.Number 和 t2.Id > t1.Id

)

于 2012-12-04T09:48:18.863 回答
0

只需使用连接来使用您指定的条件获取要删除的行:

delete t1
from #temp t1
inner join #temp t2
    on t1.code = t2.Number and t2.code = t1.Number
于 2012-12-04T09:40:57.130 回答