Как проверить перед добавлением новой случайной строки?

0

У меня есть база данных, содержащая много строк, я хочу обновить столбец в каждой строке с помощью случайной строки из 4 символов 0-9a-zA-Z, но после того, как убедиться, что эта случайная строка еще не существует.

Важная часть того, что все столбцы должны быть обновлены с помощью уникальной строки, я не знаю, как это можно сделать. Возможно, путем воссоздания новой случайной строки, когда уже существует случайная строка.

Так что в конце Если база данных содержит 500 000 строк, например, все 500 000 строк обновляются с уникальным случайным значением.

Таблица называется messages а столбец называется messageid.

Как это сделать?

Теги:
phpmyadmin

2 ответа

1

Во-первых, почему строка? Почему бы просто не использовать целое число для идентификатора сообщения? Это было бы легко реализовать:

set @m := 0;
update messages
    set message_id = (@m := @m + 1)
    order by rand();

Вы можете сделать что-то подобное со строкой, но это более громоздко, и использование числа делает это гораздо менее болезненным.

  • 0
    Приятно +1, обратите внимание, что этот запрос вызовет ошибку на серверах MySQL, которые включили SQL_SAFE_UPDATES потому что в этом запросе не используется предложение WHERE.
0

Из вопроса, похоже, вы хотите создать случайную строку.
В основном для этого вам нужно играть с функцией rand().
Вы можете использовать это для достижения случайной строки.

select conv(floor(rand() * 9999), 20, 36) ;
select SUBSTRING(MD5(RAND()) FROM 1 FOR 4);

Чтобы применить к вашей таблице,

update messages
    set message_id = (select conv(floor(rand() * 9999), 20, 36));
or



update messages
        set message_id = (select SUBSTRING(MD5(RAND()) FROM 1 FOR 4));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню