2010-09-24 15 views
20

क्या किसी तालिका के कॉलम नामों को वर्णानुक्रम में प्राप्त करने के लिए MySQL डेटाबेस से पूछना संभव है? मुझे पता है किmysql वर्णमाला क्रम में तालिका कॉलम नाम प्राप्त करें

SHOW COLUMNS `table_name`; 

या

DESCRIBE `table_name`; 

मुझे एक तालिका में कॉलम की एक सूची दे देंगे (अन्य जानकारी के साथ), लेकिन यह आदेश कॉलम प्राप्त करने के लिए क्वेरी को बदलने के लिए संभव है क्रमबद्ध रूप से क्रमबद्ध। 'फ़ील्ड' द्वारा ऑर्डर जोड़ना काम नहीं किया, इसने एक वाक्यविन्यास त्रुटि दी।

उत्तर

26

एएनएसआई INFORMATION_SCHEMA tables (in this case, INFORMATION_SCHEMA.COLUMNS) MySQL में अधिक लचीलापन प्रदान:

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 
+0

बहुत अच्छा काम किया, फिर से उपयोग किया जाएगा। क्या आप मुझे बता सकते हैं कि c.table_schema स्थिति क्यों है क्योंकि यह इसके बिना काम करना प्रतीत होता है। –

+0

@ जॉन सिसिओन: डबल डैश "-" एसक्यूएल में एक टिप्पणी है; table_schema क्वेरी से टिप्पणी की गई है। कथन में मूल्यांकन के लिए डबल डैश निकालें। –

3

हर क्षेत्र में दो बार आपको और अधिक जानकारी चाहते हैं सूचीबद्ध किया गया जब तक मैं 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 
2

इस्तेमाल किया, नीचे दिए गए क्वेरी वास्तव में उपयोगी है:

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; -- 
संबंधित मुद्दे