MySQL MIN函数为什么找到的不是最小的数

fansy007 2009-10-15 04:14:47

# SQL Manager 2007 Lite for MySQL 4.4.2.1
# ---------------------------------------
# Host : localhost
# Port : 3306
# Database : test


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES latin1 */;

SET FOREIGN_KEY_CHECKS=0;

DROP DATABASE IF EXISTS `test`;

CREATE DATABASE `test`
CHARACTER SET 'latin1'
COLLATE 'latin1_swedish_ci';

USE `test`;

#
# Structure for the `test` table :
#

DROP TABLE IF EXISTS `test`;

CREATE TABLE `test` (
`id` int(20) default NULL,
`name` varchar(20) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Data for the `test` table (LIMIT 0,500)
#

INSERT INTO `test` (`id`, `name`) VALUES
(99999,'yu'),
(99998,'zhao'),
(99997,'lee'),
(36000,'zhang'),
(35999,'wang'),
(35998,'zhou');
COMMIT;



/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


select MIN(id) from test

结果:99997

这个MIN函数是什么原理
...全文
984 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bayougeng 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fansy007 的回复:]
哎,我的mysql版本是5.0.86,可能这个版本有问题吧
[/Quote]

还是从你自己身上找原因吧。不可能带这种bug发布版本的。
lxxzhy 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 swandragon 的回复:]
不会是你有记录没插入数据库吧

select * from test;

先看看全部数据
[/Quote]
.
fansy007 2009-10-15
  • 打赏
  • 举报
回复
哎,我的mysql版本是5.0.86,可能这个版本有问题吧
HelloAldis 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kindazrael 的回复:]
SQL codeselect*from testwhere id=99999;/*这个能搜索出来不,这种情况很少是数据库问题,极大多数是自己粗心问题,先看看99999插入成功没*/
[/Quote]

唉 你看看我就犯错了 MIN 看出了 MAX
HelloAldis 2009-10-15
  • 打赏
  • 举报
回复

select * from test where id = 99999;
/*这个能搜索出来不,这种情况很少是数据库问题,极大多数是自己粗心问题,先看看99999插入成功没*/
swandragon 2009-10-15
  • 打赏
  • 举报
回复
不会是你有记录没插入数据库吧

select * from test;

先看看全部数据
swandragon 2009-10-15
  • 打赏
  • 举报
回复
mysql> insert into test values(99999,'yu');
Query OK, 1 row affected (0.03 sec)

mysql> insert into test values(99998,'zhao');
Query OK, 1 row affected (0.11 sec)

mysql> insert into test values(99997,'lee');
Query OK, 1 row affected (0.25 sec)

mysql> insert into test values(36000,'lee');
Query OK, 1 row affected (0.05 sec)

mysql> insert into test values(35999,'li');
Query OK, 1 row affected (0.13 sec)

mysql> insert into test values(35998,'li');
Query OK, 1 row affected (0.27 sec)
mysql> select min(id) from test;
+---------+
| min(id) |
+---------+
| 35998 |
+---------+
1 row in set (0.00 sec)
swandragon 2009-10-15
  • 打赏
  • 举报
回复
经过测试正确返回35998

难道是你的mysql有问题?
getemail 2009-10-15
  • 打赏
  • 举报
回复
友情帮顶

MIN函数应该是取得最小值,然后放到产生的记录集的第一条记录的第一个字段中

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧