为 MySQL 数据库生成随机名称
Generate Random Names For MySQL Database
我需要在 2,000 个随机名称的区域中生成要插入到 MySQL table 三个字段中的名称:FirstName、LastName、Gender(根据 ISO 5218)。为了帮助解决这个问题,我列出了 50 个男性名字、50 个女性名字和 100 个姓氏。如有必要,这些可以成为临时数据库 tables。我觉得在 MySQL 中这样做可能是一个明智的步骤。我不知道如何编写 SQL 代码来实现这一点。这可能吗?
您可以创建 FIRST_NAMES table,插入所有名字(男性和女性),然后创建 LAST_NAMES table,然后创建 RANDOM_NAMES table 做类似的事情:
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()
returns table 行随机排列,LIMIT 1
只有 returns 第一行,这就是你想要的。
注意上面的代码插入了一行,所以如果你想插入2000行,你需要迭代。对于迭代部分,this topic 的第一个答案似乎是一个不错的选择。
然而,这似乎是一种非常低效的方法。更好的方法是使用 INSERT-SELECT 结构。您将在这里做的是使用 FIRST_NAMES 和 LAST_NAMES table 的笛卡尔积创建一个 table,随机排列行,并将查询限制为 2000 行,然后将这些行插入到新的 table.
类似于:
INSERT INTO RANDOM_NAMES (first_name, last_name)
SELECT first, last
FROM FIRST_NAMES, LAST_NAMES
ORDER BY RAND()
LIMIT 2000
我不是 SQL 编码员,所以您可能想检查一下这是否有效。但这似乎是解决问题的最有效方法,因为您正在避免迭代。
我需要在 2,000 个随机名称的区域中生成要插入到 MySQL table 三个字段中的名称:FirstName、LastName、Gender(根据 ISO 5218)。为了帮助解决这个问题,我列出了 50 个男性名字、50 个女性名字和 100 个姓氏。如有必要,这些可以成为临时数据库 tables。我觉得在 MySQL 中这样做可能是一个明智的步骤。我不知道如何编写 SQL 代码来实现这一点。这可能吗?
您可以创建 FIRST_NAMES table,插入所有名字(男性和女性),然后创建 LAST_NAMES table,然后创建 RANDOM_NAMES table 做类似的事情:
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()
returns table 行随机排列,LIMIT 1
只有 returns 第一行,这就是你想要的。
注意上面的代码插入了一行,所以如果你想插入2000行,你需要迭代。对于迭代部分,this topic 的第一个答案似乎是一个不错的选择。
然而,这似乎是一种非常低效的方法。更好的方法是使用 INSERT-SELECT 结构。您将在这里做的是使用 FIRST_NAMES 和 LAST_NAMES table 的笛卡尔积创建一个 table,随机排列行,并将查询限制为 2000 行,然后将这些行插入到新的 table.
类似于:
INSERT INTO RANDOM_NAMES (first_name, last_name)
SELECT first, last
FROM FIRST_NAMES, LAST_NAMES
ORDER BY RAND()
LIMIT 2000
我不是 SQL 编码员,所以您可能想检查一下这是否有效。但这似乎是解决问题的最有效方法,因为您正在避免迭代。