【发布时间】:2011-02-13 11:01:19
【问题描述】:
搜索 SO 会产生许多结果,这些结果描述了如何从数据库表中随机选择 行 数据。不过,我的要求有点不同,因为我想以最有效/随机/有趣的方式从随机行中选择单个 列。
为了更好地说明:我有一个很大的客户表,我想从中生成一堆虚构的演示客户记录,这些记录不是真实的人。我正在考虑从客户表中随机查询,然后将名字与姓氏、地址、城市、州等随机配对。
如果这是我的真实客户数据(简化):
FirstName LastName State
==========================
Sally Simpson SD
Will Warren WI
Mike Malone MN
Kelly Kline KS
然后我会生成几条如下所示的记录:
FirstName LastName State
==========================
Sally Warren MN
Kelly Malone SD
等等
我最初的方法是可行的,但它缺乏我希望最终答案提供的优雅。 (我对子查询的重复性特别不满意,而且该解决方案需要已知/固定数量的字段,因此不可重用。)
SELECT
FirstName = (SELECT TOP 1 FirstName FROM Customer ORDER BY newid()),
LastName= (SELECT TOP 1 LastNameFROM Customer ORDER BY newid()),
State = (SELECT TOP 1 State FROM Customer ORDER BY newid())
谢谢!
【问题讨论】:
-
如果你说你想从你的表中选择一个随机列,对我来说,你似乎想进行查询,但不知道结果是州、名字还是姓氏。我不知道该怎么做,但这似乎也不是你想要的。您似乎确实想要选择随机行。您只希望每列有一个不同的随机行。很抱歉,除了建议您澄清您的问题之外,我无能为力。
-
我认为你们(两人)是对的,因为我真的不想要随机列。这个概念很简单(如我的示例表和示例结果所示),但措辞让我无法理解。 “随机重新排序表的各个列”怎么样?找到最佳措辞后,我将编辑问题...
-
实际上新编辑的标题看起来很完美——谢谢
标签: sql sql-server tsql