CREATE TABLE SAMPLE1(CN VARCHAR(MAX),CR VARCHAR(MAX), DN VARCHAR(MAX),DR VARCHAR(MAX),DMR VARCHAR(MAX))
INSERT INTO SAMPLE1 VALUES('C1','A','D1','--','--')
INSERT INTO SAMPLE1 VALUES('C1','B','D1','-A','--')
INSERT INTO SAMPLE1 VALUES('C1','E','D2','--','--')
INSERT INTO SAMPLE1 VALUES('C1','C','D1','-A','--')
INSERT INTO SAMPLE1 VALUES('C1','D','D3','--','--')
INSERT INTO SAMPLE1 VALUES('C1','F','D2','--','--')
INSERT INTO SAMPLE1 VALUES('C1','F','D2','-A','--')
預期結果:('C1','F','D2','-A','--') 即來自 SAMPLE1 的最后一條記錄
嘗試使用以下查詢但不起作用:
DELETE t
FROM (SELECT row_number()
OVER(
Partition BY CN
ORDER BY CR, DR, DMR DESC ) AS r
FROM SAMPLE1) t
WHERE r > 1
uj5u.com熱心網友回復:
鑒于您使用的是 SQL Server,您可以將當前查詢中的邏輯放入可洗掉的 CTE:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY CN
ORDER BY CR DESC, DR DESC, DMR DESC) rn
FROM SAMPLE1
)
DELETE
FROM cte
WHERE rn > 1;
uj5u.com熱心網友回復:
改用這個:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (Order by (select null) desc) rn
FROM SAMPLE1
)
DELETE
FROM cte
WHERE rn > 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394868.html
標籤:sql sql-server 查询语句 sql-删除
上一篇:每個選定日期的JSON根
下一篇:使用EntityFramework在.NETCore中使用子查詢撰寫SQL查詢,該查詢回傳具有不同數量回傳子行的專案串列
