Вы можете создать таблицу 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 кодировщик, так что вы можете проверить, если это работает. Но это кажется наиболее эффективным способом решения вашей проблемы, поскольку вы избегаете повторения.
В основном я сейчас использую что-то вроде этого, но я расширяю его, чтобы добавить случайный DOB в пределах диапазона, и, возможно, до финального запуска добавьте рандомизированную высоту и массу! – MichaelJohn