2010-09-24 31 views
20

Bir tablonun sütun isimlerini alfabetik olarak almak için MySQL veritabanını sorgulamak mümkün mü? Benmysql tablo sütun isimlerini alfabetik olarak alır

SHOW COLUMNS `table_name`; 

veya

DESCRIBE `table_name`; 

(diğer bilgilerle birlikte) bir tablodaki bana sütunların listesini vereceğini biliyorum, ama sütunlar almak için sorguyu değiştirmek mümkündür alfabetik olarak sıralanmıştır. 'Field' BY ORDER ekleme işe yaramadı, bir sözdizimi hatası verdi.

cevap

26

ANSI INFORMATION_SCHEMA tables (in this case, INFORMATION_SCHEMA.COLUMNS) MySQL daha fazla esneklik sağlar: Ben group by column name

select c.COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS c 
where c.TABLE_NAME = `'tbl_name'` 
group by c.column_name 
order by c.column_name 
+0

Harika çalıştı, tekrar kullanırdı. Bana neden c.table_schema koşulunun orada olduğunu söyleyebildiğini söyleyeyim, çünkü onsuz çalışıyor gibiydi. –

+0

@John Scipione: Çift çizgi "-" SQL'de bir yorumdur; table_schema sorgudan yorumlanır. İfadede değerlendirilmek üzere çift çizgi kaldırmak. –

3

Her alan sorgu gerçekten kullanışlı aşağıda iki kez yer aldı:

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

kullanılıncaya kadar daha fazla ayrıntı istiyorsanız

SELECT c.column_name 
    FROM INFORMATION_SCHEMA.COLUMNS c 
WHERE c.table_name = 'tbl_name' 
-- AND c.table_schema = 'db_name'  
ORDER BY c.column_name