MySQL Query для получения случайных комбинаций из двух таблиц - PullRequest
1 голос
/ 28 июня 2011

Хорошо, вот моя проблема, у меня есть две таблицы, одна названа по имени, а другая по фамилии. Здесь я пытаюсь найти 100 возможных комбинаций из этих имен для тестовых данных. Таблица фамилий содержит 5494 записи в одном столбце, а таблица фамилий содержит 88799 записей в одном столбце. Единственный запрос, который мне удалось составить, имеет некоторые результаты:

select * from (select * from firstnames order by rand()) f LEFT JOIN (select * from lastnames order by rand()) l on 1=1 limit 10;

Проблема с этим кодом состоит в том, что он выбирает 1 имя и дает каждую фамилию, которая может идти вместе с ним. Хотя это и правдоподобно, мне придется установить ограничение в 500000000, чтобы получить все возможные комбинации, не имея только 20 имен (и я бы не хотел убивать мой сервер). Однако мне нужно только 100 случайных поколений записей для тестовых данных, и я не смогу получить это с помощью этого кода. Может кто-нибудь дать мне какой-нибудь совет?

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Это то, что вы ищете?

SELECT * 
FROM (

SELECT firstname
FROM firstnames
ORDER BY RAND( ) 
LIMIT 10
) AS tb1
JOIN (

SELECT lastname
FROM lastnames
ORDER BY RAND( ) 
LIMIT 10
) AS tb2 ON 1=1

Это даст вам все комбинации из 10 случайных имен и 10 случайных фамилий.Измените ограничения, чтобы изменить количество имен, которые вы хотите объединить.

0 голосов
/ 28 июня 2011

Заказывайте окончательный результат с помощью rand () и до того, как вы ограничите 10, что должно перемешать ваши 500000000 результатов, чтобы получить то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...