2014-11-12 3 views
0

누군가 지정된 열을 가진 여러 테이블에서 모든 값을 가져 오는 방법을 알고 있는지 묻고 싶습니다.SQL : 지정된 열을 포함하는 여러 테이블에서 값을 선택하는 방법

예를 들어 5 개의 테이블 (t1 ... t5)이 있지만 t2, t3, t4에만 'a'라는 열이 있습니다. 어떤 테이블에 포함되어 있는지 모를 경우 'a'의 모든 값을 얻는 방법은 무엇입니까?

나는 주로 MySQL을위한 솔루션을 원한다. (PostgreSQL도 마찬가지다.)

감사합니다.

+0

이렇게하려면 동적 SQL이 필요하며 이는 사용중인 데이터베이스에 따라 달라집니다. –

+0

나는 주로 postgresql에 대한 해결책이 필요하지만 누군가가 mysql에 대한 해결책을 알고 있다면 나는 너무 행복 할 것이다. –

답변

0

SQL 서버의 모든 열을 찾아야합니다. 첫 번째 주석 처리 된 영역에 열 이름을 설정하기 만하면됩니다.

테스트 영역을 테스트하십시오.

그런 다음 아래 주석을 사용하여 쿼리 인쇄 및 쿼리 실행을 전환하십시오.

declare @tab table (id int identity(1,1) primary KEY 
,TABLE_CATALOG varchar(50) 
,TABLE_SCHEMA varchar(50) 
,TABLE_NAME varchar(50) 
,COLUMN_NAME varchar(50)) 
insert into @tab(TABLE_CATALOG , 
     TABLE_SCHEMA , 
     TABLE_NAME, 
     COLUMN_NAME) 
------- Test me 
SELECT TABLE_CATALOG , 
     TABLE_SCHEMA , 
     TABLE_NAME, 
     COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
-- Set the Column Name you are looking for. 
WHERE COLUMN_NAME = 'name' 
---- 
ORDER BY TABLE_NAME 
---- Test me endline 

declare @sql varchar(8000), @i int,@count INT 
, @TABLE_CATALOG varchar(50) 
,@TABLE_SCHEMA varchar(50) 
,@TABLE_NAME varchar(50) 
,@COLUMN_NAME varchar(50) 

set @i=1 
select @count= count(*) from @tab 
while @i <= @count 

begin 
select @TABLE_CATALOG=TABLE_CATALOG 
,@TABLE_SCHEMA=TABLE_SCHEMA 
,@TABLE_NAME=TABLE_NAME 
,@COLUMN_NAME=COLUMN_NAME 
from @tab where [email protected] 

set @sql = ' 
    SELECT '[email protected]_NAME+' AS Column_Name,* 
FROM ['[email protected]_CATALOG+'].['[email protected]_SCHEMA+'].['[email protected]_NAME+'] 
' 

--To Print the SQL Queries to the screen 
print @sql 

-- Uncomment and comment the Print Above to excute them. 
--exec (@sql) 

set @[email protected]+1 
end 
+0

응답 해 주셔서 감사합니다. -하지만 이것은 PosgreSQL입니까? 왜냐하면 MySQL에서 나는 단지 오류가 발생했기 때문에 (나는 당신에게 스 니펫을 MySQl workbench에 복사하고 열 이름을 바꾼다.) ... 감사. –

+0

또는 스 니펫 사용 방법을 알려주십시오. 감사. –

+1

당신은 MySQL과 전혀 다른 MySql 태그를 ... 어느 것이지? – Codexer

관련 문제