MySQL中奇怪的排序错误?

时间:2012-01-03 13:53:55

标签: mysql

我的MySQL服务器(版本:5.0.51a-3ubuntu5.8)我有以下InnoDB表:

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从id = 1升级到id = 7的行。

如果我通过执行任何folloginw更改来更改查询:

  1. “LIMIT 5” - > “LIMIT 6”
  2. 从查询中删除列“kontostand”
  3. 删除“WHERE konto ='1'”
  4. 结果将是从“id = 8”开始按降序排序的行。

    这里有什么问题?

1 个答案:

答案 0 :(得分:3)

听起来你已经在mysql中找到了这个bug,其解决方案在mysql 5.0.68