2024-04-26 14:56:49 发布
网友
我需要在这个区域生成2000个随机名字,插入到MySQL表的三个字段中:FirstName、LastName、Gender(根据ISO5218)。为了帮助这一点,我列出了50个男性名字,50个女性名字和100个姓氏。如果需要,这些表可以成为临时数据库表。我可以用Python编写一些代码(经过一点研究),但我觉得用MySQL编写可能是更明智的一步。但是我不知道如何编写SQL代码来实现这一点。这可能吗?在
谢谢你。。。在
您可以创建一个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只返回第一行,这正是您想要的。在
ORDER BY RAND()
LIMIT 1
请注意,上面的代码只插入一行,因此如果要插入2000行,则需要迭代。对于迭代部分,this topic的第一个答案似乎是个不错的选择。在
然而,这似乎是一种非常低效的方法。更好的方法是使用INSERT-SELECT构造。这里要做的是创建一个表,使用FIRST_NAMES和LAST_NAMES表的笛卡尔乘积,随机排列行,并将查询限制在2000行,然后将这些行插入到新表中。在
比如:
我不是SQL编码器,所以你可能想检查一下这个是否有效。但这似乎是解决问题的最有效方法,因为您避免了迭代。在
您可以创建一个FIRST_NAMES表,插入所有名(男性和女性),然后创建一个LAST_NAMES表,然后创建RANDOM_NAMES表,执行如下操作:
ORDER BY RAND()
以随机顺序返回表行,LIMIT 1
只返回第一行,这正是您想要的。在请注意,上面的代码只插入一行,因此如果要插入2000行,则需要迭代。对于迭代部分,this topic的第一个答案似乎是个不错的选择。在
然而,这似乎是一种非常低效的方法。更好的方法是使用INSERT-SELECT构造。这里要做的是创建一个表,使用FIRST_NAMES和LAST_NAMES表的笛卡尔乘积,随机排列行,并将查询限制在2000行,然后将这些行插入到新表中。在
比如:
^{2}$我不是SQL编码器,所以你可能想检查一下这个是否有效。但这似乎是解决问题的最有效方法,因为您避免了迭代。在
相关问题 更多 >
编程相关推荐