从2个单独的列SQL中选择2个随机值

时间:2018-04-13 11:22:31

标签: sql-server tsql

我必须准备测试数据以发送给第三方,但我不希望向客户发送真实姓名,也不希望发送他们的真实出生日期。

我可以通过几年随机增加DOB来解决D.O.B问题。然而,名称是不同的,无论如何我可以有一个说10个客户名单的列表,每次只选择一个不同的名字和姓氏。

我希望混合和匹配名称,所以它基本上随机选择1个名字,然后随机选择一个姓氏并将它们放在同一行。

ctrTabbarOpciones

每次都会返回一个随机的名字,但是如果我在其中输入姓氏列也将返回匹配的姓氏,我不希望我想从列表中随机输入姓氏。

我尝试通过SELECT TOP 1 opde.first_name FROM Table AS opde ORDER BY NEWID() 执行此操作,但您无法在UNION中执行ORDER BY NEWID()

干杯。

2 个答案:

答案 0 :(得分:1)

我认为这个可能有帮助...

WITH fn AS
(
    SELECT TOP 1 opde.first_name
    FROM Table AS opde 
    ORDER BY NEWID()
),
sn AS
(
    SELECT TOP 1 opde.surname
    FROM Table AS opde 
    ORDER BY NEWID()
)
SELECT first_name, surname
FROM fn
CROSS APPLY sn;

在fn子查询中,您选择一个随机的名字。在sn你做同样但有姓。 通过交叉应用,您可以将这两个结果组合起来

答案 1 :(得分:0)

您可以使用子查询联合,每个子查询使用NEWID的顺序:

SELECT first_name
FROM
(SELECT TOP 1 opde.first_name FROM Table AS opde ORDER BY NEWID()) t1
UNION ALL
SELECT first_name
FROM
(SELECT TOP 1 opde.first_name FROM Table AS opde ORDER BY NEWID()) t2;

Demo