2011-04-07 2 views
1

수십 개의 테이블을 쿼리하고 이러한 모든 테이블의 UNION ALL을 반환해야합니다. 이 테이블은 모두 동일한 열 이름을가집니다. 이 쿼리에 의해 반환 된 행의 수는 상기 질의가 표로부터 모든 행과 결합하는 표 2에서 100 개 행을 일으키는 100MySQL 제한 반환되는 행 수 Union 모든 문

`SELECT column1, column2 FROM table1 UNION ALL SELECT column1, column2 FROM table2 LIMIT 100;` 

최대가 될 것이다. 이것이 어떻게 성취 될 수 있는가?

답변

5

시도 :

SELECT column1, column2 FROM ( 
    SELECT column1, column2 
    FROM table1 
UNION ALL 
    SELECT column1, column2 
    FROM table2 
) as resutl_table 
LIMIT 100; 
+0

: SELECT 컬럼 1, 2 열을 DerivedTableName의 LIMIT 100 (표 1의 UNION ALL SELECT 컬럼 1, 표 2 FROM FROM 2 열을 2 열을 선택 컬럼 1) 행; 작품입니다. 파생 테이블 정의가 결과를 생성 할 수있는 후에 파생 테이블의 이름을 배치합니다. – rsman

+1

대답의 예는 sub_query에 대한 별칭이 필요합니다. – MatBailie

1
select * from (
SELECT column1, column2 FROM table1 
UNION ALL 
SELECT column1, column2 FROM table2) as t 
LIMIT 100 
1
SELECT * FROM (
      SELECT column1, column2 
      FROM table1 
       UNION ALL 
      SELECT column1, column2 
      FROM table2 
      ) as result_set LIMIT 100 
2

당신은 당신이 당신의 기본 쿼리 주위에 쿼리를 "포장"그래서 한도는 모든 테이블에 적용 할. 래핑 된 쿼리는 단일 결과 집합으로 사용 된 모든 테이블에 행 수 제한을 적용 할 수 있습니다.

SELECT * FROM (<your existing query>) LIMIT 100; 

원하는 경우 주문을 적용 할 수도 있습니다.

SELECT * FROM (<your existing query>) ORDER BY column1 LIMIT 100 
사용