2009-09-19 2 views
1

개별 열 이름을 지정하는 대신 행을 선택하고 모든 열을 반환하는 방법은 무엇입니까?MySQL SELECT 문을 열 이름을 지정하지 않고도 사용할 수 있습니까?

또한 특정 기준과 일치하는 열만 표시 할 수 있습니까? (예 : "_"로 시작하는 열 이름)

+0

을 아니면 내가 저장 프로 시저를 사용해야합니다 : 정규화 된 형태에서

두 개의 테이블을 사용해야합니까? 그래도 나는 SQL 문을 선호한다. –

+1

SELECT * FROM table ?? – Aziz

+2

데이터베이스와 같은 사운드가 일반 형식이 아니므로 절대 필요하지 않습니다. 참조 : http://en.wikipedia.org/wiki/Database_normalization#Normal_forms –

답변

3

다 :

SELECT * FROM mytable 

먼저 (... COL로 시작하는) 필요한 열을 선택하여 데이터베이스 스키마 테이블 :

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'mytable' AND column_name LIKE 'col%' 

다음 값을 선택합니다 :

SELECT [found column names from previous query] FROM mytable 
1

SELECT * FROM TABLE_NAME은 모든 열을 선택합니다.

7

당신은 모든 열을 선택할 수 있습니다

SELECT * FROM table_name 

당신은 SELECT 문에 열 이름을 필터링 할 수 없습니다, 그러나 SHOW 열이있는 데이터베이스에 자신을 존재하는 당신이 열 이름을 필터링 할 수 있습니다

SHOW COLUMNS FROM table_name LIKE "_%" 

'_'로 시작하는 열을 표시합니다. 매우 많은 열이있는 매우 큰 테이블이 있고 해당 필드에서 SELECT 문을 작성해야하는 경우 먼저 열을 SHOW COLUMNS으로 표시 한 다음 해당 결과에서 SELECT 쿼리를 생성하여 프로그래밍 방식으로 문을 작성하는 것이 좋습니다.

1

당신으로 필드 이름을 데이터처럼 사용하려는 경우, 테이블 디자인이 사용자에게 적합하지 않다는 것이 명백합니다. 하고 싶다. 테이블 등으로부터

Id Language Word 
------------------- 
1 English Water 
1 Swedish Vatten 
1 German Wasser 
2 English Car 
2 Swedish Bil 
2 German Auto 

:

Id English Swedish German 
------------------------------- 
1 Water Vatten Wasser 
2 Car  Bil  Auto 

당신은 당신이 필드에 데이터가있는 테이블을 원하는 대신 당신처럼, 필드 이름에 데이터가 테이블의

특정 언어를 동적으로 가져 오는 데 아무런 문제가 없습니다. SQL 쿼리를 동적으로 생성하지 않고 첫 번째 테이블에서 수행 할 수없는 작업입니다.

LanguageId Language 
--------------------- 
1   English 
2   Swedish 
3   German 

Id LanguageId Word 
------------------------ 
1 1   Water 
1 2   Vatten 
1 3   Wasser 
2 1   Car 
2 2   Bil 
2 3   Auto