복붙노트

[SQL] 여러 SELECT 문을 결합

SQL

여러 SELECT 문을 결합

나는 동일한 스키마의 많은 수의 데이터베이스의 스키마 이름 목록에서 여러 SELECT 문을 생성하는 Excel을 사용했습니다 :

select result from foo.table limit 1;
select result from bar.table limit 1;
select result from doo.table limit 1;

(foo는, 바 & 덜렁이 내 스키마의 예입니다, 수백 현실에있다).

각 SELECT는 하나의 결과를 반환합니다. 나는 단순히 스키마가 있기 때문에 많은 행으로 하나 열 개 결과를 원한다. 나는 다음 스키마 이름에 대한 Excel로이 다시 복사 할 수 있습니다.

나는 다른 사람들이 폐기되면서, 1 개 행을 얻을 위에 나는 쿼리를 실행하면 :

Query result with 1 row discarded.

Query result with 1 row discarded.

Total query runtime: 40 ms.
1 row retrieved.

나는 UNION ALL을 사용하여 시도했지만 한계 (1) 나는 일이 발생하지 않도록하기 위해 각 스키마 테이블이 나타납니다에서 반환 한 행을 보장하기 위해 사용하고 있습니다.

어떻게 하나 폐기되는 다른 행을 방지하거나 내가 필요 값 (두 개의 열이 각 스키마에 대한 하나의 행 - - SCHEMA_NAME, 결과를) 반환하는 쿼리를 쓸 수있는보다 효율적인 방법을?

해결법

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

    1.구문이 모호하기 위해 괄호 안에 개별 하위 문을 랩 :

    구문이 모호하기 위해 괄호 안에 개별 하위 문을 랩 :

    (SELECT result FROM tbl1 LIMIT 1)
    UNION ALL
    (SELECT result FROM tbl2 LIMIT 1)
    

    UNION에 대한 매뉴얼은이 문제에 매우 분명하다 :

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

    2.하위 쿼리의 포장은 주위에 얻을 것이다, 그러나 그것은 조금 못생긴 가져옵니다.

    하위 쿼리의 포장은 주위에 얻을 것이다, 그러나 그것은 조금 못생긴 가져옵니다.

    SELECT result FROM (select 'a'::text AS result from foo limit 1) a
    UNION ALL
    SELECT result FROM (select 'b'::text AS result from bar limit 1) b
    

    최신 정보

    어윈의 응답을 참조하십시오. 그것은 더 좋다.

  3. ==============================

    3.

    create view my_data1 
    AS
    with data as
    (
        select student_id,sum(marks) as total_marks 
        from   marks_marks 
        group by 1
    ) , 
    data1 as
    (
        select id, name 
        from   students_class
    ), 
    data2 as
    (
        select applicant_name,
               id,
               class_name 
        from   students_students
    )
    select data2.applicant_name , 
           data1.name as class_name ,  
           data.total_marks 
    from   data2 
    join   data1  on data1.id = data2.class_name 
    join   data   on data.student_id = data2.id
    
    
    
    select * from my_data1
    
  4. from https://stackoverflow.com/questions/11828772/combine-multiple-select-statements by cc-by-sa and MIT license