如何在mysql中洗牌行?

b09cbbtk  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(213)

假设我有一个包含两列的表:id(主键)和name。现在这个表是按名称排序的,但我想将所有行洗牌并将id更改为随机数。我怎么能这么做?
是否可以使用update命令并将id设置为这样一个随机唯一的数字?

UPDATE mytable SET id =**GENERATE UNIQUE NUMBER**

p、 这张table是独立的。id不是另一个表的外键。

vxqlmq5t

vxqlmq5t1#

我建议您不要更新表中的主键字段,只需使用以下查询以随机顺序获取它们。

SELECT *
FROM mytable
ORDER BY RAND();

或者可以添加另一列,在其中可以添加随机值。这样地

ALTER TABLE mytable
ADD COLUMN rand_id int;

UPDATE MYTABLE SET 
RAND_ID = SELECT RAND()*((SELECT MAX(ID) FROM mytabl)-1)+1;
guykilcj

guykilcj2#

如果需要按随机顺序排列行,请获取所需的行数,然后对返回的行数组使用php的shuffle函数。在查询中使用order by rand()可能会造成相当大的性能损失,具体取决于有多少条记录。
不要更改任何ID,因为这样会破坏/破坏此表中的记录与任何相关表之间的任何关系。

相关问题