2014-02-24 2 views
0

동일한 열이있는 테이블이 많아서 모두에서 데이터를 추출해야합니다 (예 : COUNT).다른 SQL 테이블에서 데이터 선택 테이블 이름으로 필터링

UNION 문을 만들 수 있지만 100 개의 테이블이 있고 모든 테이블 이름이 같은 형식 (example_table_1, example_table_2 ...) 인 것을 알고 있습니다. 특정 조건 (이 경우 테이블 이름에 "example_table"포함)이있는 모든 테이블의 UNION을 만드는 방법이 있습니까?

도움을 주셔서 감사합니다. 저는이 문제에있어 초보자입니다.

+0

어떤 데이터베이스를 사용하고 있습니까? –

+0

안녕하세요, 무엇을 의미합니까? 나는 MySQL 호스트에 연결하고있다. –

+0

MySQL은 데이터베이스 다. 이 질문에 대한 답변은 rdbms/database에 따라 다릅니다. –

답변

1

동일한 구조의 여러 테이블이 거의 이해가되지 않는 경우 가능하면 디자인을 수정해야합니다.

당신은 카운트를 얻을 수 INFORMATION_SCHEMA를 사용하거나 (당신이 다음 SQL 문으로 CONCAT 수있는) 개별적으로 테이블을 나열 : 당신이 정확한 계산을해야하는 경우

SELECT SUM(table_rows) 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = '{your_db}' 
    AND table_name LIKE '%example_table%'; 

, 당신이 구축 CONCAT()를 사용한다 INFORMATION_SCHEMA과 같은 COUNT() 쿼리는 신뢰할 수 없습니다.

SELECT CONCAT('SELECT "',table_name,'" AS table_name, COUNT(*) AS ct FROM ',table_schema,'.',table_name,' UNION') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = '{your_db}' 
    AND table_name LIKE '%example_table%'; 
+0

안녕하세요, 답변 해 주셔서 감사합니다. 이 구조는 거대한 데이터베이스이기 때문에 의미가 있습니다. 그렇지 않으면 서버가 중단됩니다. 이 메서드는 각 테이블에 2 행이 있다고하지만 이것은 틀립니다. (각 테이블에는 1.200.000 행이 있습니다.) –

+0

@ user1475216 업데이트 됨. –

+0

감사합니다! 이 방법은 저에게 table1 = 100, table2 = 105 등의 테이블을 제공합니다. –

관련 문제