我试图计算表格中的行数并为该字段生成随机数字' random'现在这个有效:
SELECT COUNT(*) FROM my_table;
这有效:
UPDATE my_table SET random = FLOOR(6500 * RAND()) + 1;
但这不起作用:
UPDATE my_table SET random = FLOOR((SELECT COUNT(*) ) * RAND()) + 1;
但是这会将行计为0并添加一行,因此所有字段都具有第一个而不是唯一的随机数。
任何想法,我做错了都会有所帮助。
答案 0 :(得分:1)
SELECT @cnt := count(*) FROM my_table;
UPDATE my_table SET random = FLOOR(@cnt * RAND()) + 1;
答案 1 :(得分:0)
;with randtab
AS
(
SELECT
COUNT(*) AS otCount
FROM
my_table
)
UPDATE my_table
SET random = FLOOR(randtab.otCount * RAND()) + 1
from randtab;
答案 2 :(得分:0)
你试试这个:
DELIMITER $$
CREATE PROCEDURE random_fill( IN cnt INT )
BEGIN
fold: LOOP
IF cnt < 1 THEN
LEAVE fold;
END IF;
UPDATE my_table SET random = 9 + CEIL( RAND() * 90 ) from randtab;
SET cnt = cnt - 1;
END LOOP fold;
END$$
DELIMIMTER ;
并像这样使用:
CALL random_fill(10000);