MySQL ver 5.1.26MySQL: द्वारा आदेश और सीमा गलत परिणाम
मैं है कि जहां, आदेश से और सीमा खंड-चुने साथ गलत परिणाम हो रही है देता है। यह केवल एक समस्या है जब आईडी कॉलम का उपयोग करके आदेश।
मैं मैनुअल पढ़ने से के लिए LIMIT Optimization
मेरा अनुमान है MySQL मैनुअल देखा प्राथमिक कुंजी पर सूचकांक, आईडी के साथ कुछ समस्या है है। लेकिन मुझे नहीं पता कि मुझे यहां से कहाँ जाना चाहिए ...
प्रश्न: समस्या को हल करने के लिए मुझे क्या करना चाहिए?
Works correctly:
mysql> SELECT id, created_at FROM billing_invoices
WHERE (billing_invoices.account_id = 5) ORDER BY id DESC ;
+------+---------------------+
| id | created_at |
+------+---------------------+
| 1336 | 2010-05-14 08:05:25 |
| 1334 | 2010-05-06 08:05:25 |
| 1331 | 2010-05-05 23:18:11 |
+------+---------------------+
3 rows in set (0.00 sec)
WRONG result when limit added! Should be the first row, id - 1336
mysql> SELECT id, created_at FROM billing_invoices
WHERE (billing_invoices.account_id = 5) ORDER BY id DESC limit 1;
+------+---------------------+
| id | created_at |
+------+---------------------+
| 1331 | 2010-05-05 23:18:11 |
+------+---------------------+
1 row in set (0.00 sec)
Works correctly:
mysql> SELECT id, created_at FROM billing_invoices
WHERE (billing_invoices.account_id = 5) ORDER BY created_at DESC ;
+------+---------------------+
| id | created_at |
+------+---------------------+
| 1336 | 2010-05-14 08:05:25 |
| 1334 | 2010-05-06 08:05:25 |
| 1331 | 2010-05-05 23:18:11 |
+------+---------------------+
3 rows in set (0.01 sec)
Works correctly with limit:
mysql> SELECT id, created_at FROM billing_invoices
WHERE (billing_invoices.account_id = 5) ORDER BY created_at DESC limit 1;
+------+---------------------+
| id | created_at |
+------+---------------------+
| 1336 | 2010-05-14 08:05:25 |
+------+---------------------+
1 row in set (0.01 sec)
Additional info:
explain SELECT id, created_at FROM billing_invoices WHERE (billing_invoices.account_id = 5) ORDER BY id DESC limit 1;
+----+-------------+------------------+-------+--------------------------------------+--------------------------------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------------+-------+--------------------------------------+--------------------------------------+---------+------+------+-------------+
| 1 | SIMPLE | billing_invoices | range | index_billing_invoices_on_account_id | index_billing_invoices_on_account_id | 4 | NULL | 3 | Using where |
+----+-------------+------------------+-------+--------------------------------------+--------------------------------------+---------+------+------+-------------+
जोड़ा शो बनाने टेबल billing_invoices परिणाम:
Table -- billing_invoices
Create Table --
CREATE TABLE `billing_invoices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`account_id` int(11) NOT NULL,
`invoice_date` date NOT NULL,
`prior_invoice_id` int(11) DEFAULT NULL,
`closing_balance` decimal(8,2) NOT NULL,
`note` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`monthly_invoice` tinyint(1) NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_billing_invoices_on_account_id` (`account_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1337 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
जोड़ा अधिक:
मैं अब है कि मेरे विकास मशीन पर देखते हैं, सब कुछ सही ढंग से काम कर रहा है। यही कारण है कि मशीन VERSION संस्करण() की 5.1.26-rc-लॉग इन करें
मेरी उत्पादन मशीन, जहां समस्या है पर है, मुझे लगता है कि संस्करण() रिटर्न 5.1.26-rc-percona-लॉग इन करें
तो इस बिंदु पर, मुझे लगता है कि समस्या पेकोना सॉफ्टवेयर के साथ है?
जोड़ा अधिक:
इस बिंदु पर, मैं इसे Percona InnoDB चालक में एक बग पर विचार करने के लिए जा रहा हूँ। मैंने question to their forum रखा है। तत्काल काम के रूप में, मैं create_at द्वारा ऑर्डर करने जा रहा हूं। मैं अपने सिस्टम पर डीबी को अपग्रेड करने की जांच भी करूंगा और देख सकता हूं कि इससे मदद मिलती है या नहीं।
मेरी मदद के लिए रब्बोट और एमडीएमए का धन्यवाद। मैं इस मदद की भी सराहना करता हूं कि मैं कुछ मूर्खतापूर्ण नहीं कर रहा हूं, यह वास्तव में एक समस्या है।
के परिणाम शामिल करें आपके प्रश्न में निम्नलिखित प्रश्न: 'तालिका बिलिंग_इनवोइस बनाएं; '। – Asaph
बहुत अजीब। मैंने अपने mysql सर्वर पर एक समान क्वेरी का परीक्षण किया और यह केवल तब मिलता है जब मैं प्राथमिक_आईडी डीईएससी सीमा 1 द्वारा ऑर्डर का उपयोग करता हूं ... मेरी प्राथमिक आईडी एक स्वत: जेनरेटेड int है ... आपके सर्वर पर एक बग की तरह लगता है ... –