我有一个小问题,到哪也不急~~(我着急了,刚才回答的朋友们我粗心把null加引号了,所以答案基本都不对)
declare @test table( id int identity primary key, name nvarchar(20), Logo nvarchar(20))insert into @test values('aaa','aaa.jpg')insert into @test values('aaa',null)insert into @test values('bbb',null)insert into @test values('ccc',null)insert into @test values('ccc',null)insert into @test values('ccc','ccc.jpg')insert into @test values('bbb','bbb.jpg')insert into @test values('ddd','ddd.jpg')declare @test table( id int identity primary key, name nvarchar(20), Logo nvarchar(20))insert into @test values('aaa','aaa.jpg')insert into @test values('aaa',null)insert into @test values('bbb',null)insert into @test values('ccc',null)insert into @test values('ccc',null)insert into @test values('ccc','ccc.jpg')insert into @test values('bbb','bbb.jpg')insert into @test values('ddd','ddd.jpg')select distinct t.* from @test across apply(select top 1 * from @test where name=a.name order by Logo desc) t/*id name Logo----------- -------------------- --------------------1 aaa aaa.jpg6 ccc ccc.jpg7 bbb bbb.jpg8 ddd ddd.jpg(4 行受影响)
[解决办法]
declare @test table( id int identity primary key, name nvarchar(20), Logo nvarchar(20))insert into @test values('aaa','aaa.jpg')insert into @test values('aaa',null)insert into @test values('bbb',null)insert into @test values('ccc',null)insert into @test values('ccc',null)insert into @test values('ccc','ccc.jpg')insert into @test values('bbb','bbb.jpg')insert into @test values('ddd','ddd.jpg')insert into @test values('eee',null)select * from @test a where isnull(Logo,'')=(select isnull(max(Logo),'') from @test where name=a.name)/*id name Logo----------- -------------------- --------------------1 aaa aaa.jpg6 ccc ccc.jpg7 bbb bbb.jpg8 ddd ddd.jpg9 eee NULL*/