剔除SQL数据库中重复的数据和它们中间夹着的数据,并且保留最后一条
删除SQL数据库中重复的数据和它们中间夹着的数据,并且保留最后一条?
标题可能有点说不清 是这样
ID BiaoShi ShenID ShenHe XuHao
1 18 19 1 1
2 18 19 2 2
3 18 19 3 3
4 18 19 2 4
ShenHe 中有重复的数据,要删除重复的和这2条数据中夹着的数据,并且保留XuHao最大的数据

实在是头晕了
------解决思路----------------------
------解决思路----------------------
t2里面按 Biao、ShenHe 分组,就这个差别。
标题可能有点说不清 是这样
ID BiaoShi ShenID ShenHe XuHao
1 18 19 1 1
2 18 19 2 2
3 18 19 3 3
4 18 19 2 4
ShenHe 中有重复的数据,要删除重复的和这2条数据中夹着的数据,并且保留XuHao最大的数据
实在是头晕了
------解决思路----------------------
WITH t1(ID,BiaoShi,ShenID,ShenHe,XuHao)AS(
SELECT 1,18,19,1,1 UNION ALL
SELECT 2,18,19,2,2 UNION ALL
SELECT 3,18,19,3,3 UNION ALL
SELECT 4,18,19,2,4 UNION ALL
SELECT 5,18,19,4,5
)
SELECT *
INTO #temp
FROM t1
;WITH t2 AS (
SELECT ShenHe,
MIN(ID) min_id,
MAX(ID) max_id,
MAX(XuHao) max_xuhao
FROM #temp
GROUP BY ShenHe
HAVING COUNT(*) > 1
)
--SELECT * FROM t2
DELETE #temp
FROM #temp
JOIN t2
ON #temp.ID BETWEEN t2.min_id AND t2.max_id
WHERE #temp.xuhao <> t2.max_xuhao
SELECT *
FROM #temp
ID BiaoShi ShenID ShenHe XuHao
----------- ----------- ----------- ----------- -----------
1 18 19 1 1
4 18 19 2 4
5 18 19 4 5
------解决思路----------------------
t2里面按 Biao、ShenHe 分组,就这个差别。