我有一张顾客及其订单表。我想选择每个客户的随机订单。
示例表
customer | orders
---------+---------
customerA| Order1
customerA| Order2
CustomerA| Order3
customerB| Order1
customerB| Order2
customerB| Order3
CustomerC| Order1
customerC| Order2
结果表
customer | orders
---------+---------
customerA| Order2
customerB| Order1
CustomerC| Order1
有办法吗?
答案 0 :(得分:4)
您可以使用row_number()
(和ANSI标准功能)。但是,计算随机数因数据库而异。这是一个想法:
select t.*
from (select t.*,
row_number() over (partition by customer order by random()) as seqnum
from t
) t
where seqnum = 1;
一些随机数函数:
newid()
random()
dbms_random.value
random(1, 999999999)
rand()
rand()