테이블을 참조하지 않고 상수를 선택하는 것은 SQL 문에서 완벽하게 합법적입니다.
SELECT 1, 2, 3
후자가 리턴하는 결과 세트는 값을 포함하는 단일 행입니다. 상수 표현식을 사용하여 한 번에 여러 행을 선택할 수있는 방법이 있는지 궁금합니다.
SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9))
위와 같이 작동하고 3 행과 3 열로 결과 집합을 반환하려고합니다.
답변
SELECT 1, 2, 3
UNION ALL SELECT 4, 5, 6
UNION ALL SELECT 7, 8, 9
답변
에서은 PostgreSQL
, 당신은 할 수 있습니다 :
SELECT *
FROM (
VALUES
(1, 2),
(3, 4)
) AS q (col1, col2)
다른 시스템에서는 다음을 사용하십시오 UNION ALL
.
SELECT 1 AS col1, 2 AS col2
-- FROM dual
-- uncomment the line above if in Oracle
UNION ALL
SELECT 3 AS col1, 3 AS col2
-- FROM dual
-- uncomment the line above if in Oracle
이어 Oracle
, SQL Server
및 PostgreSQL
, 또한 행 (외부 변수 제공 가능한) 임의의 수의 레코드를 생성 할 수있다 :
SELECT level
FROM dual
CONNECT BY
level <= :n
에서 Oracle
,
WITH q (l) AS
(
SELECT 1
UNION ALL
SELECT l + 1
FROM q
WHERE l < @n
)
SELECT l
FROM q
-- OPTION (MAXRECURSION 0)
-- uncomment line above if @n >= 100
에서 SQL Server
,
SELECT l
FROM generate_series(1, $n) l
에서 PostgreSQL
.
답변
VALUES
PostgreSQL에서 다음과 같은 베어 명령이 작동합니다.
VALUES (1,2,3), (4,5,6), (7,8,9)
답변
오라클에서 connect by 절을 사용해보십시오.
select level,level+1,level+2 from dual connect by level <=3;
connect by 절에 대한 자세한 내용을 보려면 다음 링크를 따르십시오. oraclebin 사이트가 이제 악성이므로 URL을 제거했습니다.
답변
Microsoft SQL Server 또는 PostgreSQL의 경우이 구문을 사용해 볼 수 있습니다
SELECT constants FROM (VALUES ('foo@gmail.com'), ('bar@gmail.com'), ('baz@gmail.com')) AS MyTable(constants)
여기에서 SQL Fiddle을 볼 수도 있습니다. http://www.sqlfiddle.com/#!17/9eecb/34703/0
답변
신탁. 이 게시물 덕분에 PL / SQL-절의 “목록”변수 사용
예제 문장을 정리하여 수동으로 값을 쉽게 입력 할 수 있습니다 (테스터가 응용 프로그램을 테스트 할 때 재 사용됨).
WITH prods AS (
SELECT column_value AS prods_code
FROM TABLE(
sys.odcivarchar2list(
'prod1',
'prod2'
)
)
)
SELECT * FROM prods
답변
SELECT *
FROM DUAL
CONNECT BY ROWNUM <= 9;
