Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在MySQL中洗牌行?_Php_Mysql_Sql - Fatal编程技术网

Php 如何在MySQL中洗牌行?

Php 如何在MySQL中洗牌行?,php,mysql,sql,Php,Mysql,Sql,假设我有一个包含两列的表:id(主键)和name。现在这个表是按名称排序的,但我想洗牌所有行并将id更改为随机数。我怎么能这样做 是否可以使用update命令并将id设置为这样一个随机唯一的数字 UPDATE mytable SET id = **GENERATE UNIQUE NUMBER** 附:这张桌子是独立的。Id不是另一个表的外键 我建议您不要更新表中的主键字段,只需使用以下查询以随机顺序获取它们即可 SELECT * FROM mytable ORDER BY RAND(); 或

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

是否可以使用update命令并将id设置为这样一个随机唯一的数字

UPDATE mytable SET id = **GENERATE UNIQUE NUMBER**
附:这张桌子是独立的。Id不是另一个表的外键


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

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;

如果需要按随机顺序排列行,请获取所需的行数,然后对返回的行数组使用PHP的shuffle函数。在查询中使用ORDER BY RAND()可能会造成相当大的性能损失,具体取决于有多少条记录


不要更改任何ID,因为这样会破坏/破坏此表中记录与任何相关表之间的任何关系。

您真的需要更改ID还是只需要按随机顺序获取元素<代码>1、2、3、4也是随机顺序…我真的需要更改ID,谢谢。
PK
永远不应该更改,因为这会导致现有数据之间的关系不好。是的,这是可能的(但我不建议),这不是真正的“随机排列”,因为
rand\u ID
可以在不同的行中具有相同的值。也许这就是OP真正想要的(答案是可以接受的),但“shuffle”一词的使用和样本数据表明情况并非如此。实际上我不明白你的意思。如果您能更改答案使其正确,我将不胜感激。