【发布时间】:2010-03-17 08:15:47
【问题描述】:
我有一个大型用户数据库 (13k+),出于某种原因,我需要创建随机名称。 users 表有“first_name”和“last_name”。现在我想要两个完全随机的行的 10 个全名和姓氏连接。用 SQL 也能做到吗?
我的另一个想法是创建一个 full_names 和 last_names 表……但这不会有太大的挑战。
哦,它不应该占用太多性能:)(所以按 rand() 排序不是一个选项;))
【问题讨论】:
我有一个大型用户数据库 (13k+),出于某种原因,我需要创建随机名称。 users 表有“first_name”和“last_name”。现在我想要两个完全随机的行的 10 个全名和姓氏连接。用 SQL 也能做到吗?
我的另一个想法是创建一个 full_names 和 last_names 表……但这不会有太大的挑战。
哦,它不应该占用太多性能:)(所以按 rand() 排序不是一个选项;))
【问题讨论】:
我不明白“两个完全随机的行的 10 个全名和姓氏的连接”,所以这可能不是您的最终答案,但它应该会引导您朝着正确的方向前进。如需更完整的答案,请提供您正在查找的内容的一些示例输出以及您的数据库架构。
这通常应该在代码中完成,而不是在 SQL 中。但是,在 SQL 中是可能的。有一个要求。您必须有一个增量整数键列。例如,密钥应该从 1 开始,到 13000 结束。
RAND() 实现可能会有所不同,具体取决于您的数据库供应商。
这是查询:
SELECT CONCAT(u1.first_name, ul.last_name) AS full_name
FROM users
WHERE mykey = FLOOR(1 + (RAND() * 13000))
如果密钥有间隙,它会变得有点棘手,随机性将有利于间隙,所以我希望没有间隙。
【讨论】: