我需要從具有相同customer_id
和deactivation_date
一個表Log
刪除除類似的行的第一次出現所有重複行。我如何用最少數量的sql語句實現這一目標。MSSQL查詢刪除從一個表的重複行留下不同的行表
我正在使用MS SQL Server 2008 express版本。
我需要從具有相同customer_id
和deactivation_date
一個表Log
刪除除類似的行的第一次出現所有重複行。我如何用最少數量的sql語句實現這一目標。MSSQL查詢刪除從一個表的重複行留下不同的行表
我正在使用MS SQL Server 2008 express版本。
喜歡的東西:
DELETE FROM Log WHERE LogId NOT IN
(SELECT Min(LogId) FROM Log GROUP BY customer_id, deactivation_date)
你沒有給我們太多的工作。但是,也許是這樣的:
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY [Log].customer_id ORDER BY
deactivation_date) AS RowNbr,
[Log].*
FROM
[Log]
)
DELETE FROM [Log]
WHERE EXISTS
(
SELECT
NULL
FROM
CTE
WHERE
CTE.RowNbr>1
AND CTE.log_id =[Log].log_id
)
或者:
with cte as (
select row_number() over (partition by customer_id, deactivation_date
order by log_id) as rn
from Log)
delete from cte
where rn > 1;
ü[R使用何種查詢.. – 2012-04-27 07:24:24
什麼版本的SQL服務器您使用的是? – Arion 2012-04-27 07:24:37
@Arion sql 2008 express edition – 2012-04-27 07:25:27