假设我有一个包含两列的表:id(主键)和name。现在这个表是按名称排序的,但我想将所有行洗牌并将id更改为随机数。我怎么能这么做?是否可以使用update命令并将id设置为这样一个随机唯一的数字?
UPDATE mytable SET id =**GENERATE UNIQUE NUMBER**
p、 这张table是独立的。id不是另一个表的外键。
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;
guykilcj2#
如果需要按随机顺序排列行,请获取所需的行数,然后对返回的行数组使用php的shuffle函数。在查询中使用order by rand()可能会造成相当大的性能损失,具体取决于有多少条记录。不要更改任何ID,因为这样会破坏/破坏此表中的记录与任何相关表之间的任何关系。
2条答案
按热度按时间vxqlmq5t1#
我建议您不要更新表中的主键字段,只需使用以下查询以随机顺序获取它们。
或者可以添加另一列,在其中可以添加随机值。这样地
guykilcj2#
如果需要按随机顺序排列行,请获取所需的行数,然后对返回的行数组使用php的shuffle函数。在查询中使用order by rand()可能会造成相当大的性能损失,具体取决于有多少条记录。
不要更改任何ID,因为这样会破坏/破坏此表中的记录与任何相关表之间的任何关系。