2012-09-27 5 views
2

SQL server에서 1을 더 선택할 수 있는지 알고 싶습니다. uniqueidentifier.두 개 이상의 uniqueidentifier를 선택하는 방법은 무엇입니까?

1 : SELECT NEWID()을 선택하면 1 개의 결과가 나타납니다. 나는 50 개 결과

처럼 돌아 오게하려는

편집 :

나는 결과가 1 그리드에 반환하고 싶은, 그래서 난 한 번에 모두 복사 할 수 있습니다. 1을 1로 복사하여 붙여 넣지 마십시오.

답변

4

SQL Server Management Studio에서이 작업을 수행하려고합니까?

시도 :

SELECT NEWID() 
GO 50 

이 배치

업데이트 실행

확인을 - 어떻게에 대한 다음? NEWID 때마다 무작위이기 때문에 당신에 의해 주문을하지 않아도

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

다음 master.dbo.sysobjects 테이블을 가정

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

이렇게하면 좋겠지 만 결과를 선택하여 1 그리드로 반환 할 수 있습니다. 나는 이들 모두를 엑셀 시트에 복사하고 싶다. 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

거기에 적어도 50 시스템 개체가 있습니다.

+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 대답 기준 –

관련 문제