2012-09-27 37 views
2

我想知道如果我可以在SQL server中选择多于1 uniqueidentifier如何选择多个唯一标识符?

要选择1:SELECT NEWID()这会带来1个结果。

我想带回像50个结果

编辑:

我想结果在1个格返回,这样我就可以一次复制所有的人。不要复制和粘贴1 1.

回答

4

您是否试图在SQL Server Management Studio中执行此操作?

尝试:

SELECT NEWID() 
GO 50 

,并运行该批处理

更新:

OK - 这个怎么样?然后

SELECT NEWID() 
FROM master..spt_values 
WHERE name IS NULL 
AND number < 50 
+0

这看起来不错,但是可以选择它们,以便将结果返回到1个网格中。我想将它们全部复制到Excel表格中。我不想复制1 1. – Willem

+0

完美的谢谢。 =) – Willem

1
-- Static solution: only 5 GUID values 

SELECT NEWID() 
FROM (VALUES(1), (2), (3), (4), (5)) AS Numbers(Number) 

-- Dynamic solution 

DECLARE @Num INT; 
SET @Num=5; 
SELECT TOP(@Num) 
     NEWID() 
FROM sys.objects o; 

-- Another dynamic solution 
--SET STATISTICS IO ON; 
--GO 

DECLARE @Num INT; 
SET @Num=567; 

WITH N10(Number) 
AS (
    SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL 
    SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 
), N100(Number) 
AS (
    SELECT (a.Number-1)*10+b.Number 
    FROM N10 AS a CROSS JOIN N10 AS b 
), N1000(Number) 
AS (
    SELECT (a.Number-1)*100+b.Number 
    FROM N100 AS a CROSS JOIN N100 AS b 
) 
SELECT TOP(@Num) 
     NEWID() AS [GUID] 
FROM N1000; 
3

假设master.dbo.sysobjects表中有至少50个系统对象:

SELECT TOP 50 NEWID() FROM master.dbo.sysobjects WHERE xtype = 'S' 

你并不需要通过一个订单,因为NEWID每一次是随机的。

+0

+1真的很聪明!我喜欢它 - 比我的第二种方法简单得多;-) –

+2

为什么'WHERE'子句? –

+0

@RemusRusanu - 只是想确保里面至少有50条记录,因为我不确定表中有多少个非系统对象,但这不是必须的。 – LittleBobbyTables

1
--run these queries independently 
CREATE TABLE #temp1 (ID UniqueIdentifier) 
GO 

INSERT INTO #temp1 
SELECT NewID() AS ID 
GO 50 

SELECT * 
FROM #temp1 
GO 

DROP TABLE #temp1 
GO 
+0

基于@marc_s的答案 –