SQL判断多笔数据中,字段相同的数据只取其中一笔。如下 。

2025-03-23 18:50:58
推荐回答(3个)
回答1:

WITH t AS (SELECT areaId FROM 表 
GROUP BY areaId  HAVING COUNT(areaId) > 1) 
SELECT * FROM 表 WHERE  ReserverState =  'run'  AND areaId IN(SELECT areaId FROM t) 
UNION ALL 
SELECT  *  FROM t WHERE areaId NOT IN (SELECT areaId FROM t)

回答2:

select * from 表 where AreaID in('A01','A03','B01','B02','C01','C02' )
union all
select top 1 * from 表 where AreaID ='A02' and ReserveState = 'Run'

回答3:

看函数应该是sqlserver的数据库,不知道是什么版本呢?
如果是2005或2008 可以这样写:
SELECT t.* FROM (
SELECT
ROW_NUMBER() OVER(PARTION BY t.AREAID ORDER BY ReserveState DESC )) as rn.
t.*
FROM TABLE t
WHERE 1=1
) t
WHERE t.rn=1