2016-03-31 2 views
0

У меня есть база данных с песнями. Каждая песня имеет уникальный идентификатор. Как я могу генерировать случайное уникальное значение для каждого идентификатора в базе данных?База данных Shuffle id

Пример:

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

После воспроизведения в случайном порядке

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

Любая идея?

+1

сколько песен в БД? – Matt

ответ

1

Используйте комбинацию из FLOOR и RAND(), чтобы получить то, что вы хотите.

Если в вашем db есть 1000 песен.

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

Если в вашем db есть 7000 песен.

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

Update ..

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

Может, он хочет обновить свой стол? – sagi

+0

Да. Я хочу обновить таблицу. – Cosmin

+0

И что, если 'ID' уникален (имеет смысл), и ранд будет бить тот же номер дважды (также имеет смысл) – sagi

0

ли ID должны быть целое? Если нет, вы можете подумать об использовании GUIDS. Если это возможно для вас, то вы получите дополнительную информацию перенастройки таблицу здесь: Generate GUID in MySQL for existing Data?

0

попробовать это:

SELECT @nr:[email protected]+1 AS nr, tmp.* 
FROM (
    SELECT * FROM yourTable ORDER BY rand() 
) AS tmp 
CROSS JOIN (SELECT @nr:=0) AS parameter 
Смежные вопросы