再次请教大虾一个问题
刚才问了一下问题:
我现在有一个表如下
XH CJ
001 25
001 44
001 62
001 49
002 32
002 33
002 65
003 18
003 22
003 75
我现在要用一条SQL语句实现
XH CJ
001 44
002 33
003 75
在这里的CJ是随机的,比如003可以是22,也可以是18 也可以是75,每执行一次可以均不一样
大虾们给我这样一个答案:
create table test(XH char(3), CJ int)
insert test(XH,CJ)
select '001', 25 union all
select '001', 44 union all
select '001', 62 union all
select '001', 49 union all
select '002', 32 union all
select '002', 33 union all
select '002', 65 union all
select '003', 18 union all
select '003', 22 union all
select '003', 75
select * from test
--据大侠们说,如果数据量大的话,这种效率写法效率很低
select
XH,
CJ=(select top 1 CJ from test where XH=t.XH order by newid())
from test t
group by XH
drop table test
我现在如果这个表还有一两列
如:
XH CJ DW KC
001 25 NJ WL
001 44 BJ HX
001 62 BJ WL
001 49 SH ZW
002 32 NJ ZW
002 33 SH SX
002 65 NJ WL
003 18 SH HX
003 22 NJ WL
003 75 BJ ZW
我现在要用一条SQL语句实现
XH CJ DW KC
001 44 BJ HX
002 33 SH SX
003 75 BJ ZW
在这里CJ是随机的,而DW与KC是根据CJ的所在纪录的值而来的,请问我又该怎么写,谢谢
在这里的CJ是随机的,比如003可以是22,也可以是18 也可以是75,每执行一次可以均不一样