1

first row's code column 等しい場合に行を削除する方法。second rows number columnsecond 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);

サンプル データの場合、これを投稿すると、次の 1 行のみが削除されます。

ID     CODE    NUMBER 
2       1        2     

SQL フィドルのデモ

于 2012-12-04T09:52:46.510 に答える
0

t1を削除

#temp t1 から

存在する場所(

select * from #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 に答える