【问题标题】:Shuffle database id随机播放数据库 ID
【发布时间】:2016-03-31 08:34:49
【问题描述】:

我有一个包含歌曲的数据库。每首歌都有一个唯一的ID。如何为数据库中的每个 id 生成随机唯一值?

例子:

id | song name    
1  | song1  
2  | song2  
3  | song3

洗牌后

id | song name    
45 | song1  
96 | song2  
10 | song3  

有什么想法吗?

【问题讨论】:

  • 数据库中有多少首歌曲?

标签: mysql sql random


【解决方案1】:

使用FLOORRAND() 的组合来获得您想要的。

如果您的数据库中有 1000 首歌曲。

SELECT FLOOR(RAND() * (1 - 1000 + 1)) + 1 AS ID, "song name"
FROM yourtable

如果您的数据库中有 7000 首歌曲。

SELECT FLOOR(RAND() * (1 - 7000 + 1)) + 1 AS ID, "song name"
FROM yourtable

更新..

UPDATE yourtable
SET id = FLOOR(RAND() * (1 - 1000 + 1)) + 1;

【讨论】:

  • 如果ID 是唯一的(有意义)并且兰特会两次击中相同的数字(也有意义)
  • 如何避免使用这个为 id 生成重复值?
【解决方案2】:

ID 必须是 整数 吗?如果没有,您可以考虑使用 GUIDS 。如果这对您来说是可能的,那么您可以在此处获得有关迁移表的更多信息: Generate GUID in MySQL for existing Data?

【讨论】:

    【解决方案3】:

    试试这个:

    SELECT  @nr:=@nr+1 AS nr, tmp.* 
    FROM (
      SELECT * FROM yourTable ORDER BY rand()
      ) AS tmp
    CROSS JOIN ( SELECT @nr:=0 ) AS parameter
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多