संभव डुप्लिकेट:MySQL डिफ़ॉल्ट आदेश पर निर्भर करता है, जहां
CREATE TABLE IF NOT EXISTS `table_test` ( `id` mediumint(8) unsigned NOT NULL, `country` enum('AF','AX','AL') DEFAULT NULL, `number` tinyint(3) unsigned DEFAULT NULL, `sort_order` double unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `country` (`country`), KEY `id` (`id`,`country`) ) ENGINE=MEMORY DEFAULT CHARSET=latin1;
मैं एक मेज है जिसके लिए मैं बदल:
Default sort-ordering in MySQL (ALTER TABLE … ORDER BY …;)
मैं इस तरह एक मेज है डिफ़ॉल्ट क्रम जैसे:
ALTER TABLE test_table ORDER BY sort_order ASC;
यह तालिका कभी अपडेट नहीं होती है और इसके रिकॉर्ड के दौरान कोई रिकॉर्ड हटाया या जोड़ा नहीं जाता है।
SELECT * FROM test_table LIMIT 10
यह सही क्रम में 10 रिकॉर्ड रिटर्न: यह सब अगर मैं folowwing क्वेरी उपयोग करती हैं इसलिए काम करने के लिए लगता है।
और अगर मैं का उपयोग करें:
SELECT * FROM test_table WHERE num=3
यह सही क्रम में परिणाम देता है।
लेकिन अगर मैं
SELECT * FROM test_table WHERE country='AX'
कर यह उलट क्रम में परिणाम देगा।
क्या कोई मुझे बता सकता है कि यह कैसे हो सकता है?
'देश' अनुक्रमित है और शायद 'देश' सूचकांक' sort_order' के समान क्रम में नहीं है, या यह बिल्कुल आदेश नहीं दिया गया है। या आपके मामले में यह गलती से रिवर्स ऑर्डर किया गया है ... – Vili
_ORDER BY इनो डीडी टेबल के लिए समझ में नहीं आता है जिसमें उपयोगकर्ता द्वारा परिभाषित क्लस्टर्ड इंडेक्स (प्राथमिक कुंजी या नॉन यूनिक इंडेक्स) शामिल है। यदि कोई मौजूद है तो InnoDB हमेशा ऐसी अनुक्रमणिका के अनुसार तालिका पंक्तियों का ऑर्डर करता है ._ - http://dev.mysql.com/doc/refman/5.1/en/alter-table.html - मुझे पता है कि आपका टेबल इंजन स्मृति है, फिर भी मुझे लगता है कि मामला वही है। – Vili
यह ऐसा ही प्रतीत होता है: http://stackoverflow.com/questions/725717/default-sort-ordering-in-mysql-alter-table-order-by .. दस्तावेज़ों को छोड़कर: ध्यान दें कि तालिका नहीं रहती आवेषण और हटाए जाने के बाद इस क्रम में। यह विकल्प प्राथमिक रूप से उपयोगी होता है जब आप जानते हैं कि ज्यादातर समय में आप निश्चित रूप से पंक्तियों से पूछताछ करते हैं। तालिका में बड़े बदलावों के बाद इस विकल्प का उपयोग करके, आप उच्च प्रदर्शन प्राप्त करने में सक्षम हो सकते हैं। कुछ मामलों में, यह MySQL के लिए सॉर्टिंग को आसान बना सकता है यदि तालिका कॉलम द्वारा क्रमबद्ध है जिसे आप बाद में ऑर्डर करना चाहते हैं ... मई, मई ... – xQbert