[SQL] 어떻게 상수 가득 여러 행을 선택하려면?
SQL어떻게 상수 가득 여러 행을 선택하려면?
테이블을 참조하지 않고 상수를 선택하면 SQL 문에 완벽하게 합법적이다 :
SELECT 1, 2, 3
그 결과, 후자의 리턴 값을 포함하는 하나의 행임을 설정. , 뭔가 가지를 일정한 식을 사용하여 한 번에 여러 행을 선택하는 방법이 있는지 궁금 해서요 :
SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9))
나는 그 작품 반환 위의 같은 3 행 3 열이있는 결과 세트를 원하는 것입니다.
해결법
-
==============================
1.
SELECT 1, 2, 3 UNION ALL SELECT 4, 5, 6 UNION ALL SELECT 7, 8, 9
-
==============================
2.PostgreSQL을, 당신은 할 수 있습니다 :
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
오라클, SQL Server 및 PostgreSQL을, 당신은 또한 행 (외부 변수로 제공 가능)의 임의의 수의 레코드를 생성 할 수 있습니다 :
SELECT level FROM dual CONNECT BY level <= :n
오라클,
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 서버에서,
SELECT l FROM generate_series(1, $n) l
PostgreSQL을한다.
-
==============================
3.베어 VALUES는 PostgreSQL을에 나를 위해 일을 명령에 따라 :
베어 VALUES는 PostgreSQL을에 나를 위해 일을 명령에 따라 :
VALUES (1,2,3), (4,5,6), (7,8,9)
-
==============================
4.오라클의 조항에 의해 이런 식으로 뭔가를 연결 시도
오라클의 조항에 의해 이런 식으로 뭔가를 연결 시도
select level,level+1,level+2 from dual connect by level <=3;
oraclebin 사이트는 이제 악성이기 때문에 제거 된 URL : 절에 의해 연결에 대한 자세한 내용은이 링크를 따르십시오.
-
==============================
5.마이크로 소프트 SQL Server 또는 PostgreSQL을 위해 당신은이 구문을 시도 할 수 있습니다
마이크로 소프트 SQL Server 또는 PostgreSQL을 위해 당신은이 구문을 시도 할 수 있습니다
FROM SELECT 상수 (VALUES ( 'foo@gmail.com') ( 'bar@gmail.com') ( 'baz@gmail.com'))을 MyTable AS (상수)
또한 여기에 SQL 바이올린을 볼 수 있습니다 http://www.sqlfiddle.com/#!17/9eecb/34703/0
-
==============================
6.신탁. 이 게시물에 대한 감사는 PL / SQL - 어디에서 절에 사용 "목록"변수
신탁. 이 게시물에 대한 감사는 PL / SQL - 어디에서 절에 사용 "목록"변수
나는 쉽게 수동으로 입력 값 (테스터하여 응용 프로그램을 테스트에서 재사용되는)에 함께 내 예를 들어 문을 넣어 :
WITH prods AS ( SELECT column_value AS prods_code FROM TABLE( sys.odcivarchar2list( 'prod1', 'prod2' ) ) ) SELECT * FROM prods
-
==============================
7.
SELECT * FROM DUAL CONNECT BY ROWNUM <= 9;
-
==============================
8.여기에 내가 깔끔한 XML 트릭을 사용하여 Oracle 10 + 정적 데이터를 채우는 방법이다.
여기에 내가 깔끔한 XML 트릭을 사용하여 Oracle 10 + 정적 데이터를 채우는 방법이다.
create table prop (ID NUMBER, NAME varchar2(10), VAL varchar2(10), CREATED timestamp, CONSTRAINT PK_PROP PRIMARY KEY(ID) ); merge into Prop p using ( select extractValue(value(r), '/R/ID') ID, extractValue(value(r), '/R/NAME') NAME, extractValue(value(r), '/R/VAL') VAL from (select xmltype(' <ROWSET> <R><ID>1</ID><NAME>key1</NAME><VAL>value1</VAL></R> <R><ID>2</ID><NAME>key2</NAME><VAL>value2</VAL></R> <R><ID>3</ID><NAME>key3</NAME><VAL>value3</VAL></R> </ROWSET> ') xml from dual) input, table(xmlsequence(input.xml.extract('/ROWSET/R'))) r ) p_new on (p.ID = p_new.ID) when not matched then insert (ID, NAME, VAL, CREATED) values ( p_new.ID, p_new.NAME, p_new.VAL, SYSTIMESTAMP );
병합은 편리 원래 테이블에 누락 된 행을 삽입 당신은 당신의 삽입 스크립트를 다시 실행하십시오.
-
==============================
9.DB2에 대한 옵션 :
DB2에 대한 옵션 :
SELECT 101 AS C1, 102 AS C2 FROM SYSIBM.SYSDUMMY1 UNION ALL SELECT 201 AS C1, 202 AS C2 FROM SYSIBM.SYSDUMMY1 UNION ALL SELECT 301 AS C1, 302 AS C2 FROM SYSIBM.SYSDUMMY1
-
==============================
10.오라클
오라클
SELECT CASE WHEN level = 1 THEN 'HI' WHEN level = 2 THEN 'BYE' END TEST FROM dual CONNECT BY level <= 2;
-
==============================
11.다음은 DB2의 XML 기능을 사용하여 수행하는 방법이다
다음은 DB2의 XML 기능을 사용하여 수행하는 방법이다
SELECT * FROM XMLTABLE ('$doc/ROWSET/ROW' PASSING XMLPARSE ( DOCUMENT ' <ROWSET> <ROW> <A val="1" /> <B val="2" /> <C val="3" /> </ROW> <ROW> <A val="4" /> <B val="5" /> <C val="6" /> </ROW> <ROW> <A val="7" /> <B val="8" /> <C val="9" /> </ROW> </ROWSET> ') AS "doc" COLUMNS "A" INT PATH 'A/@val', "B" INT PATH 'B/@val', "C" INT PATH 'C/@val' ) AS X ;
-
==============================
12.당신을 도울 수있는이 방법
당신을 도울 수있는이 방법
SELECT TOP 3 1 AS First, 2 AS Second, 3 AS Third FROM Any_Table_In_Your_DataBase
Any_Table_In_Your_DataBase : 3 개 이상의 레코드를 포함, 또는 시스템 테이블을 사용하는 테이블. 여기에서 우리는 그 테이블의 데이터 염려가 없습니다.
당신은 Any_Table_In_Your_DataBase 테이블에서 제 1, 제 2, 제 3 열이있는 열을 연결하여 결과 집합의 변화를 가져올 수 있습니다.
-
==============================
13.MySQL은, 당신은 할 수 있습니다 : 값 (1, 2), (3, 4);
MySQL은, 당신은 할 수 있습니다 : 값 (1, 2), (3, 4);
mysql> values (1,2), (3, 4); +---+---+ | 1 | 2 | +---+---+ | 1 | 2 | | 3 | 4 | +---+---+ 2 rows in set (0.004 sec)
MySQL은 8, 열 이름을 지정하는 것도 가능합니다 :
mysql> SELECT * FROM (SELECT 1, 2, 3, 4) AS dt (a, b, c, d); +---+---+---+---+ | a | b | c | d | +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+
-
==============================
14.
select (level - 1) * row_dif + 1 as a, (level - 1) * row_dif + 2 as b, (level - 1) * row_dif + 3 as c from dual connect by level <= number_of_rows;
그런 일
select (level - 1) * 3 + 1 as a, (level - 1) * 3 + 2 as b, (level - 1) * 3 + 3 as c from dual connect by level <= 3;
from https://stackoverflow.com/questions/2201170/how-to-select-multiple-rows-filled-with-constants by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL ON DELETE CASCADE, 어떤 방법을 수행하는 삭제 발생? (0) | 2020.05.18 |
---|---|
[SQL] 데이터베이스 테이블의 ID 컬럼의 이름 지정 (0) | 2020.05.18 |
[SQL] 어떻게 PHP와 MySQL과 간단한 사이트 검색을 구현하는 것이? (0) | 2020.05.18 |
[SQL] 어떻게 SQL에서 테이블의 마지막 레코드를 선택하려면? (0) | 2020.05.18 |
[SQL] 어떻게 새 행의 고유 ID에서 SQL 테이블하지만 스왑에 기록을 복사합니까? (0) | 2020.05.18 |