2010-06-11 3 views
9

필드 및 해당 유형의 목록을 표시하기 위해 "describe table"출력에 대해 작업하고 있습니다. 기본 키가 목록 맨 위에 있어야합니다. SQL을 사용하여 설명의 결과를 정렬 할 수있는 방법이 없다고 생각합니다. 'order by')를 PHP에서 정렬하는 대신"테이블 설명"쿼리 결과를 정렬하는 가장 깨끗한 방법은 무엇입니까?

너희들은 어떻게 생각하니? 감사합니다.

+0

관련하여 관심이 있으시면 [이 답변] (http://stackoverflow.com/a/38679580)에 * 모든 테이블 설명 *을 적어 두었습니다. 의 주문을 변경할 수 있습니다. cmd를 제거하고 유연한 유형의 명령을 사용합니다. – Drew

답변

2

정확합니다. MySQL은 항상 실제 순서대로 열을 출력합니다. 즉, 테이블의 데이터에 물리적으로 저장된 순서입니다.

기본 키가 가장 먼저 나올 수 있도록 테이블 내에서 물리적으로 열을 이동할 수 있습니다.하지만 이렇게하려면 MySQL이 테이블을 잠그고 새 데이터를 전체 순서로 다시 작성해야합니다. 거의 가치가 없습니다.

테이블이 실제로 어떻게 구조화되어 있는지에 관계없이 좋은 결과물을 출력하는 데 관심이 있다면 PHP에서 간단하게 usort() 호출을 사용하여 열을 정렬 할 수 있습니다.

-2

설명을 사용하지 말고 대부분의 dbms가 제공하는 스키마 정보 테이블을 사용하십시오. 그러면 간단한 선택을 사용하여 정보를 얻을 수 있습니다.

+0

이것은 기본적으로 "스키마 정보 테이블 용 Google"입니다. 링크, 코드 또는 mysql에 특정한 것이 도움이되었을 것입니다. –

14

SHOW COLUMNS 또는 DESCRIBE TABLE을 수행하면 실제로는 INFORMATION_SCHEMA이라는 기본 제공 특수 데이터베이스를 사용하여 명명 된 테이블에 대한 정보를 가져옵니다. 재미있는 점은 정보를 테이블로 반환하지 않는 것입니다. 따라서 이러한 함수가 반환하는 데이터를 정렬 (정렬, 서브 쿼리 등)을 위해 테이블처럼 작동시키는 것은 불가능합니다.

다행히, 당신은 SHOW와 같은 조회를 수행하거나 설명하기 위해 자신의 쿼리를 설정할 수 있습니다

select COLUMN_NAME as 'Field', 
     COLUMN_TYPE as 'Type', 
     IS_NULLABLE as 'Null', 
     COLUMN_KEY  as 'Key', 
     COLUMN_DEFAULT as 'Default', 
     EXTRA   as 'Extra' 
    from INFORMATION_SCHEMA.COLUMNS 
     where TABLE_NAME = 'my table' and 
       TABLE_SCHEMA = 'my database' 

    -- add ordering -- 
    order by Type; 

를 제외하고 영업 이익 : 감사를 나에게 다시이 작업을 수행하는 방법을 찾아 볼 수있는 인센티브를주는. 나는 이것을 한 번 알고 있었지만 잊어 버렸습니다.

+2

이것을 실행하는 사람이라면 분명히 알 수 있습니다 :''table''을 설명하고자하는 테이블의 이름으로 바꾸고''database'''를 데이터베이스의 이름으로 바꾸십시오. – jesseplymale