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