2015-03-06 9 views
0

Мне нужно сгенерировать в области 2000 случайных имен, которые нужно вставить в таблицу MySQL в трех полях: FirstName, LastName, Gender (согласно ISO 5218). Чтобы помочь в этом, у меня есть списки из 50 мужских фамилий, 50 женских фамилий и 100 фамилий. При необходимости они могут стать временными таблицами базы данных. Я мог бы написать код на Python (после небольшого исследования), но чувствую, что делать это в MySQL - это, наверное, более разумный шаг. Однако я не знаю, как закодировать SQL для этого. Это возможно?Генерировать случайные имена для базы данных MySQL

Спасибо ...

ответ

2

Вы можете создать таблицу FIRST_NAMES, вставить все имена (мужские и женские), а затем создать таблицу LAST_NAMES, а затем создать таблицу RANDOM_NAMES делать что-то вроде:

INSERT INTO RANDOM_NAMES 
VALUES (SELECT first FROM FIRST_NAMES 
     ORDER BY RAND() 
     LIMIT 1, 
     SELECT last FROM LAST_NAMES 
     ORDER BY RAND() 
     LIMIT 1) 

ORDER BY RAND() возвращает строки таблицы в случайном порядке, а LIMIT 1 возвращает только первую строку, что вы хотите.

Обратите внимание, что приведенный выше код вставляет одну строку, поэтому, если вы хотите вставить 2000 строк, вам необходимо выполнить итерацию. Для части итерации первый ответ для this topic кажется хорошей ставкой.

Это похоже на очень неэффективный способ сделать это. Лучший способ сделать это - использовать конструкцию INSERT-SELECT. Здесь вы создадите таблицу с декартовым продуктом таблиц FIRST_NAMES и LAST_NAMES, упорядочиваете строки случайным образом и ограничиваете запрос до 2000 строк, а затем вставляете эти строки в свою новую таблицу.

Что-то вроде:

INSERT INTO RANDOM_NAMES (first_name, last_name) 
    SELECT first, last 
    FROM FIRST_NAMES, LAST_NAMES 
    ORDER BY RAND() 
    LIMIT 2000 

Я не SQL кодировщик, так что вы можете проверить, если это работает. Но это кажется наиболее эффективным способом решения вашей проблемы, поскольку вы избегаете повторения.

+0

В основном я сейчас использую что-то вроде этого, но я расширяю его, чтобы добавить случайный DOB в пределах диапазона, и, возможно, до финального запуска добавьте рандомизированную высоту и массу! – MichaelJohn

Смежные вопросы