MYSQL表中的1和MAX之间的随机值

时间:2016-12-09 17:07:05

标签: mysql select random

我在MySQL中需要一些随机变量的帮助。我希望它选择1和表姓氏中最高值之间的随机值。解决方案让我不知道......

 SET id = ROUND(RAND()*((SELECT COUNT(*) FROM surnames)-1)+1);                  
 SET surnameValue = (SELECT asurname FROM surnames WHERE surname_id = id);

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定每行是否需要一个值或一个值。因此,我将向您展示两种解决方案。我也假设你想要一个随机整数。

现在因为我没有看到表格,所以我将'valueField'标记为定义最大值的列。 'primaryKeyField'是可以将表连接到自身的字段。

如果你想要一个单一的价值,这是一个解决方案......

SELECT (FLOOR( 1 + RAND( ) * max(valueField) )) AS value
FROM surnames

如果您想要选择每行的值,这是一个解决方案......

SELECT (FLOOR( 1 + RAND( ) * `max` )) AS value
FROM surnames s
INNER JOIN (SELECT primaryKeyField, max(valueField) as `max`
            FROM surnames 
            GROUP BY valueField) r ON r.primaryKeyField = s.primaryKeyField