MySQL生成依赖于列值的随机数

时间:2017-06-12 22:27:40

标签: mysql sql

我一直在寻找几个小时,我不知道该怎么做。接下来是问题所在。我有两张桌子,顾客和订单。 客户有id和5-6列为空,必须填充随机数据。为此,我们将orders_accepted_campaigns作为我们要填充数据的列。在订单表中,我们有customer_ids和订单值。那么我应该如何编写一个查询来填充每个orders_accepted_campaigns字段,其随机数低于每个客户订单的数量(count(customer_id) from orders group by customer_id),这样您就不能拥有4个订单和5 orders_accepted_campaigns

2 个答案:

答案 0 :(得分:2)

如果你想要一个介于0和k - 1之间的均匀分布的随机整数,请使用这个表达式。

  TRUNCATE(RAND() * k , 0)

避免CAST;它是圆形而不是截断,这会扰乱均匀分布。

答案 1 :(得分:0)

听起来你想要一个wrapper.instance()

update

注意:当客户零订单时,这会将值设置为update customers c left join (select customer_id, count(*) as cnt from orders o group by customer_id ) o on o.customer_id = c.customer_id set orders_accepted_campaigns = floor(rand() * cnt);