2012-01-03 107 views
0

我的MySQL服务器(版本:5.0.51a-3ubuntu5.8)我有以下InnoDB表:MySQL中奇怪的排序错误?

CREATE TABLE `kontostaende` (
    `id` int(11) NOT NULL auto_increment, 
    `zeit` timestamp NOT NULL default CURRENT_TIMESTAMP, 
    `kontostand` decimal(8,3) NOT NULL, 
    `kontostand_zukunft` decimal(8,3) NOT NULL, 
    `konto` int(11) NOT NULL, 
    `protokoll` int(11) NOT NULL, 
    `bemerkung` text NOT NULL, 
    `veraenderung` decimal(8,3) NOT NULL, 
    `deleted` tinyint(1) NOT NULL default '0', 
    `monat_jahr` int(11) NOT NULL, 
    `offen` tinyint(1) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `konto` (`konto`), 
    KEY `protokoll` (`protokoll`), 
    KEY `monat_jahr` (`monat_jahr`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; 

为样本数据见http://pastebin.com/8zXh43Zg

以下查询产生错误(错误地排序的结果):

SELECT id,kontostand 
FROM `kontostaende` 
WHERE konto = '1' 
ORDER BY id DESC 
LIMIT 5 

它将显示行由ID = 1〜ID = 7排序升序从ID。

如果我通过执行任何的folloginw的变化而改变的查询:

  1. “LIMIT 5” - > “LIMIT 6”
  2. 中删除列从查询 “kontostand”
  3. 删除“WHERE KONTO ='1'“

结果将按行从”id = 8“开始降序排列。

这里有什么问题?

+0

为此,我得到预期的使用您的代码在5.5.16结果和查询 – gbn 2012-01-03 13:58:39

+0

请问DB /表/列有哪些归类? – GordonM 2012-01-03 13:59:43

+0

@GordonM:这是排序在一个INT列,这是独立的排序 – gbn 2012-01-03 14:07:48

回答