복붙노트

[SQL] 그것은 tableless이 여러 행으로 선택이 가능합니까?

SQL

그것은 tableless이 여러 행으로 선택이 가능합니까?

FROM 절없는 SELECT는 테이블을 쿼리하지 않고 우리에게 여러 열을 가져옵니다

SELECT 17+23, REPLACE('bannanna', 'nn', 'n'), RAND(), CURRENT_TIMESTAMP;

우리는 어떻게 쿼리를 쓸 수있는 테이블을 참조하지 않고 여러 행의 결과인가? 기본적으로, 데이터 정의 문으로 바꿀을 선택 남용. 결과는 단일 열 또는 여러 열을 가질 수 있습니다.

나는 DBMS 중립적 인 대답에 가장 관심이 있지만, (예를 들어, UNPIVOT 기준) 다른 사람을 환영합니다. 나는 가능한 한이 일을 여러 가지 방법으로 수집하고 싶습니다. 이 질문에 뒤에 어떤 기술이 응용 프로그램은 없습니다; 그것은 실제보다 더 이론적이다.

해결법

  1. ==============================

    1.노동 조합을 사용합니다 :

    노동 조합을 사용합니다 :

    SELECT 1
    UNION
    SELECT 2
    

    MySQL은 다음과 같습니다 :

    +---+
    | 1 |
    +---+
    | 1 | 
    | 2 | 
    +---+
    

    사용 UNION ALL이 아닌 고유 한 행의 손실을 방지 할 수 있습니다.

  2. ==============================

    2.당신의 RDBMS에서 지원하는 경우이 표 값 생성자를 사용할 수 있습니다. 여기 씨 Celko의 예입니다

    당신의 RDBMS에서 지원하는 경우이 표 값 생성자를 사용할 수 있습니다. 여기 씨 Celko의 예입니다

    SELECT X.*
    FROM   (VALUES (1, 3.07766, 6.31371, 12.7062, 63.65600),
                   (2, 1.88562, 2.91999, 4.30265, 9.92482),
                   (3, 1.63774, 2.35336, 3.18243, 5.84089)) AS X (A, B, C, D, E); 
    
  3. ==============================

    3.T-SQL UNPIVOT은 열을 행 데이터를 트랜스 수 있습니다. 다중 unpivots 각 피봇 열의 직교 제품 동등하다.

    T-SQL UNPIVOT은 열을 행 데이터를 트랜스 수 있습니다. 다중 unpivots 각 피봇 열의 직교 제품 동등하다.

    SELECT N, S
      FROM (SELECT 1 aa, 2 ab, 3 ac, 'a' ba, 'b' bb, 'c' bc) s
      UNPIVOT (N for Num in (aa,ab,ac)) AS t
      UNPIVOT (S for Str in (ba,bb,bc)) AS u
    

    결과: N | 에스 - + - 1 | ㅏ 1 | 비 1 | 씨 2 | ㅏ 2 | 비 2 | 씨 3 | ㅏ 3 | 비 3 | 씨

  4. from https://stackoverflow.com/questions/2886449/is-it-possible-to-have-a-tableless-select-with-multiple-rows by cc-by-sa and MIT license