2014-04-07 3 views
0
Select 0 AS A, 1 AS B FROM someTable 

위의 쿼리를 기반으로 someTable에 어떤 데이터가 있는지에 관계없이 열과 데이터의 수를 하드 코딩 할 수 있으며 행 수는 someTable의 행 수에 따라 달라집니다. 행 번호도 하드 코딩하려면 어떻게해야합니까?Select 문에서 행을 하드 코딩하는 방법은 무엇입니까?

예를 들어 someTable에 행이 10 개 밖에없는 경우 1000 행의 레코드를 가질 수 있도록 위 쿼리를 어떻게 수정해야합니까?

답변

1

당신은 당신의 테이블에 합류 십자가를 유지할 수 있습니다 : 당신이 LIMIT

SELECT 0 AS A, 1 AS B 
FROM someTable a 
     CROSS JOIN someTable b 
     CROSS JOIN someTable c 
     CROSS JOIN someTable d 
LIMIT 1000; 
을 사용해야 할 수없는 경우,

SELECT TOP 1000 0 AS A, 1 AS B 
FROM someTable a 
     CROSS JOIN someTable b 
     CROSS JOIN someTable c 
     CROSS JOIN someTable d; 

나는이 SQL 서버 당신이 SSMS 태그는 사실에서 가정 오전

여기에서 문제가되는 것은 SomeTable에 행이 1 개만있는 경우 몇 번이나 합류했는지 상관 없으며 한 행만 남게됩니다. 실제로 테이블의 값을 신경 쓰지 않고 행을 생성하는 데만 사용하려는 경우 시스템 뷰를 사용하여 필요한 것보다 많은 행이 필요하다는 것을 알 수 있습니다 (다시 SQL Server라고 가정).

SELECT TOP 1000 0 AS A, 1 AS B 
FROM sys.all_objects a; 

비어있는 데이터베이스에서도 sys.all_objects에는 2083 개의 행이 있습니다. 방금 CROSS JOIN 견해 후 더해야 할 수 있습니다 :

SELECT TOP 1000 0 AS A, 1 AS B 
FROM sys.all_objects a 
     CROSS JOIN sys.all_objects b; 

이것은 당신에게 4,338,889 행을 줄 것이다.