SQL如何去掉查询结果的重复数据?
select top 10 a from ta order by b desc.
目的是取出依照b排序的a数据 其中b是不会重复的查询出的a是重复的,如何去掉!
例如 以下数据
a b
我 1
我 2
你 3
他 4
她 5
她 6
需要得到的数据是
她
他
你
我
这样的顺序!
[解决办法]
select a,max(b) as mb from ta order by max(b)
[解决办法]
declare @tb table (a nvarchar(12),b int)insert @tb select '我',1 union allselect '我',2 union allselect '你',3 union allselect '他',4 union allselect '她',5 union allselect '她',6select a from (select top (100) ROW_NUMBER() over(PARTITION by a order by a desc)rn ,a,b from @tb group by a,b order by b desc) aawhere rn=1/*a她他你我*/
[解决办法]
select a from ta group by a order by max(b) desc
[解决办法]
CREATE TABLE tmp AS SELECT MIN(b) as id FROM ta GROUP BY a;
DELETE FROM ta WHERE id NOT IN (SELECT id FROM tmp )
DROP TABLE tmp
然后 select * from ta order by b desc
[解决办法]
select a,max(b)
from ta
group by a
order by b desc
酱紫不可以吗?
[解决办法]
distinct
[解决办法]
CREATE TABLE TEST2( Name VARCHAR(10), Id INT)GOINSERT INTO TEST2SELECT '我',1 UNIONSELECT '我',2 UNIONSELECT '你',3 UNIONSELECT '他',4 UNIONSELECT '她',5 UNIONSELECT '她',6SELECT NAMEFROM TEST2GROUP BY NameORDER BY MAX(ID) DESC
[解决办法]
distinct
[解决办法]
select top 10 a from( select distinct a,max(b) as b from ta group by b) table_A order by b desc
[解决办法]
-- 数据create table tb(mm varchar(20),nn int)insert tb values('我',1);insert tb values('我',2);insert tb values('你',3);insert tb values('他',4);insert tb values('她',5);insert tb values('她',6);-- 查询select mm from ( select r=row_number() over (partition by mm order by nn), * from tb) a where a.r=1order by nn desc