2010-06-11 15 views
9

मैं फ़ील्ड और उनके प्रकार की सूची दिखाने के लिए "तालिका का वर्णन करें" आउटपुट पर काम कर रहा हूं, मैं चाहता हूं कि मेरी प्राथमिक कुंजी सूची के शीर्ष पर हो .. मुझे लगता है कि एसक्यूएल (कुछ का उपयोग करके वर्णन के परिणामों को सॉर्ट करने का कोई तरीका नहीं है PHP द्वारा क्रमबद्ध करने के बजाए 'ऑर्डर बाय' की तरह)।"वर्णन तालिका" क्वेरी परिणामों को सॉर्ट करने का सबसे साफ तरीका क्या है?

आप क्या सोचते हैं लोग? धन्यवाद

+0

संबंधित, यदि यह ब्याज की बात है, तो मैंने [इस उत्तर] में सभी टेबल्स * का वर्णन किया है (http://stackoverflow.com/a/38679580)। आप अपने cmd को तोड़कर और इस तरह के लचीले में आने से ' द्वारा 'ऑर्डर बदल सकते हैं। – Drew

उत्तर

2

आप सही हैं। MySQL हमेशा उनके वास्तविक क्रम में स्तंभों को आउटपुट करेगा - यानी, वे तालिका के डेटा में भौतिक रूप से संग्रहीत ऑर्डर करते हैं।

आप भौतिक रूप से अपनी तालिका के भीतर कॉलम को स्थानांतरित कर सकते हैं ताकि प्राथमिक कुंजी पहले हों, हालांकि इसके लिए MySQL को तालिका को लॉक करने और नए ऑर्डर में अपने पूरे डेटा को फिर से लिखने की आवश्यकता होगी। यह लगभग कभी सार्थक नहीं है।

यदि आप वास्तव में अच्छी आउटपुट पेश करने में रुचि रखते हैं, भले ही तालिका वास्तव में कैसे संरचित की जाती है, आप वास्तव में PHP में कॉलम को सॉर्ट कर सकते हैं, शायद एक सरल usort() कॉल का उपयोग कर।

-2

वर्णन का उपयोग न करें लेकिन अधिकांश डीबीएमएस द्वारा प्रदान की जाने वाली स्कीमा सूचना तालिका का उपयोग करें। फिर आप अपनी जानकारी प्राप्त करने के लिए सरल चयन का उपयोग कर सकते हैं।

+0

यह मूल रूप से "स्कीमा सूचना तालिकाओं के लिए Google" कह रहा है। एक लिंक, कोड, या mysql के लिए विशिष्ट कुछ भी मददगार होगा। –

14

जब आप SHOW COLUMNS या DESCRIBE TABLE करते हैं, तो आप वास्तव में नामित तालिका के बारे में जानकारी खींचने के लिए INFORMATION_SCHEMA नामक बिल्टिन विशेष डेटाबेस का उपयोग कर रहे हैं। मजेदार बात यह है कि ऐसा लगता है कि यह जानकारी तालिका के रूप में नहीं लौटाती है, इसलिए उन कार्यों द्वारा लौटाए गए डेटा को तालिका (जैसे सॉर्टिंग, सबक्वायरींग इत्यादि) के लिए काम करना असंभव है।

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

एफवाईआई (शायद स्पष्ट) जो इसे चलाता है: 'तालिका' को उस तालिका के नाम से बदलना सुनिश्चित करें जिसे आप वर्णन करना चाहते हैं, और 'डेटाबेस' 'डेटाबेस के नाम से है। – jesseplymale

संबंधित मुद्दे