为 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 编码员,所以您可能想检查一下这是否有效。但这似乎是解决问题的最有效方法,因为您正在避免迭代。