如何将某一字段相同的多条记录中,筛选出一条记录
通过表一左联结到表二,会得到型号相同但产品号不同的多条记录,怎样能每个型号只选取一条记录,像表三那样。尝试用DISTINCT 不好用。
表一
型号产量价格
HP51001005000
HP52002006500
HP35483007800
表二
产品号型号
AAAHP5100
BBBHP5100
CCCHP5100
DDDHP5200
EEEHP5200
FFFHP3548
GGGHP3548
JJJHP3548
KKKHP3548
表三
产品号型号产量价格
BBBHP51001005000
DDDHP52002006500
JJJHP35483007800
[解决办法]
- SQL code
declare @表一 table (型号 varchar(6),产量 int,价格 int)insert into @表一select 'HP5100',100,5000 union allselect 'HP5200',200,6500 union allselect 'HP3548',300,7800declare @表二 table (产品号 varchar(3),型号 varchar(6))insert into @表二select 'AAA','HP5100' union allselect 'BBB','HP5100' union allselect 'CCC','HP5100' union allselect 'DDD','HP5200' union allselect 'EEE','HP5200' union allselect 'FFF','HP3548' union allselect 'GGG','HP3548' union allselect 'JJJ','HP3548' union allselect 'KKK','HP3548'select *,(SELECT TOP 1 产品号 FROM @表二 WHERE 型号=A.型号 ORDER BY NEWID()) from @表一 A /*型号 产量 价格 ------ ----------- ----------- ----HP5100 100 5000 BBBHP5200 200 6500 DDDHP3548 300 7800 GGG*/