如何根据1个表中的2列获得一些随机会话?

时间:2010-03-17 08:15:47

标签: sql random

我有一个大型用户数据库(13k +),由于某种原因,我需要创建随机名称。 users表具有“first_name”和“last_name”。现在我希望有10个full_name的concats和两个完全随机的行的last_name。这甚至可以用SQL吗?

我的另一个想法就是创建一个full_names和last_names表......但这并不是那么具有挑战性。

哦,它不应该占用太多的性能:)(所以rand()的顺序不是一个选项;))

1 个答案:

答案 0 :(得分:0)

我不明白“10个full_name和last_name两个完全随机的行”,所以这可能不是你的最终答案,但它应该引导你朝着正确的方向前进。有关更完整的答案,请提供您正在查找的内容和数据库架构的示例输出。

这通常应该在代码中完成,而不是在SQL中完成。但是,它可以在SQL中使用。有一个要求。您必须具有增量整数键列。例如,密钥应从1开始,到13000结束。

RAND()实现可能会有所不同,具体取决于您的数据库供应商。

以下是查询:

SELECT CONCAT(u1.first_name, ul.last_name) AS full_name
FROM users
WHERE mykey = FLOOR(1 + (RAND() * 13000))

如果密钥有间隙,它会变得有点棘手,随机性会有利于间隙,所以我希望没有间隙。