kateli1991

为MySQL数据库生成随机名称



我需要在这个区域生成2000个随机名字,插入到MySQL表的三个字段中:FirstName、LastName、Gender(根据ISO5218)。为了帮助这一点,我列出了50个男性名字,50个女性名字和100个姓氏。如果需要,这些表可以成为临时数据库表。我可以用Python编写一些代码(经过一点研究),但我觉得用MySQL编写可能是更明智的一步。但是我不知道如何编写SQL代码来实现这一点。这可能吗?在

谢谢你。。。在


已被浏览了1763次
6 日,19 小时 之前提问
1 个回答
fefe Tyson

您可以创建一个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行,然后将这些行插入到新表中。在

比如:

^{2}$

我不是SQL编码器,所以你可能想检查一下这个是否有效。但这似乎是解决问题的最有效方法,因为您避免了迭代。在

评论 - 2020年7月29日 10:44

最新Python问答

推荐Python问答