mysql表的数据怎么打乱顺序?
有1万条数据是按插入顺序排列的 主键id从1开始自增 现在想打乱这个表的数据重新随机排序 这个有办法吗?举个例子
1 张三 3岁
2 李四 2岁
3 王五 8岁
4 赵六 5岁
我想把这个表打乱成
1 李四 2岁
2 赵六 5岁
3 张三 3岁
4 王五 8岁
相当于主键还是按照1开始,后面的字段随机排列,这个mysql语句要怎么写,百度找了半天也没找到写法。 本帖最后由 Klock0828 于 2023-3-21 19:19 编辑
你可以使用MySQL中的ORDER BY RAND()来对数据进行重新随机排序。SELECT * FROM table_name ORDER BY RAND(); UPDATE my_table SET id = id + FLOOR(RAND() * 10000);
SELECT * FROM my_table ORDER BY RAND();
我是要更新这个表,不用select语句查找,需要UPDATE,然后也是要从1开始排序,1-10000,中间不掉数字。 980041382 发表于 2023-3-21 19:34
UPDATE my_table SET id = id + FLOOR(RAND() * 10000);
SELECT * FROM my_table O ...
感谢兄弟,你第一条语句,相当于id+(1至10000)数字,这样新表不是从1-10000 id了,我想要的是新表主键还是1-10000排序,只是内容随机掉了。 建个相同结构的表,用select rand形式插进去,再rename不就行了 Thy 发表于 2023-3-21 19:46
建个相同结构的表,用select rand形式插进去,再rename不就行了
insert into table2 select * from table1 order by rand();我用了这个语句打乱顺序了,但是id也是跟着后面的一起的,我不知道怎么再单独把id打乱。 insert intotable2 (字段1, 字段2, ...)select(字段1, 字段2, ...)from table1 order by rand();只要不把id字段写进去就行了。。。。。原来这样就搞定。{:1_896:} 你可以使用MySQL的RAND()函数生成随机数,并在ORDER BY子句中使用它来打乱结果集中的行。以下是一个示例查询,可以将表中的行随机排序:
vbnet
Copy code
SELECT * FROM your_table_name ORDER BY RAND();
在这个查询中,your_table_name是要打乱的表名,RAND()函数用于生成随机数,ORDER BY子句按随机数排序。
如果你只想随机排序特定的列,可以将它们列出来并将它们包含在SELECT子句中,例如:
vbnet
Copy code
SELECT id, name, age FROM your_table_name ORDER BY RAND();
这将按照id的插入顺序打乱name和age列的值,但保留id的原始值不变。 我怎么感觉需要用存储过程才能实现你的功能。{:1_904:}
页:
[1]
2