+ -
当前位置:首页 → 问答吧 → 数据库查询

数据库查询

时间:2011-07-29

来源:互联网

数据库内有表 table1 表内有字段time , aaa字段  

格式如下  

time aaa  
10:01 22
10:02 34
10:03 43
10:04 44
10:05 44
10:06 32
10:07 5
10:08 32
10:10 33
10:11 100


...................
15:20 236

时间是连续的且再更新,在查询的那一时刻判断aaa的值是不是aaa内所有数据最大值或最小值 ,如果是是则找出这个时间

作者: fenxiang123   发布时间: 2011-07-29

最大值
select * from table1 order by aaa desc limit 1;

最小值
select * from table1 order by aaa limit 1;

作者: ACMAIN_CHM   发布时间: 2011-07-29

select * from table1 a 
where not exists (select 1 from table1 where aaa<a.aaa)
or not exists (select 1 from table1 where aaa>a.aaa)

作者: ACMAIN_CHM   发布时间: 2011-07-29

谢谢,可以实现,有没有快点的实现方法呢,程序对时间要求较高

作者: fenxiang123   发布时间: 2011-07-29

引用 3 楼 fenxiang123 的回复:
谢谢,可以实现,有没有快点的实现方法呢,程序对时间要求较高

aa列上加索引

作者: rucypli   发布时间: 2011-07-29

具体怎么加啊,教教我啊

作者: fenxiang123   发布时间: 2011-07-29

SELECT * FROM table1 
WHERE aa = (SELECT MIN(aa) FROM table1)
  or aa = (SELECT MAX(aa) FROM table1)
如果在aa列上有索引的话,这个查询的执行速度会很快,因为两个子查询返回的最大和最小值直接就可以从索引中取出,不需要扫描表和索引~
但是添加索引会使增删改的速度受到影响,LZ需要权衡一下利弊~

作者: liuxinran819   发布时间: 2011-07-29

具体怎么加啊,教教我啊

作者: fenxiang123   发布时间: 2011-07-29

能把加索引具体语句写出来吗,我新手啊

作者: fenxiang123   发布时间: 2011-07-29

呵呵,像这样:
ALTER TABLE table1 ADD INDEX `index_aaa`(`aaa`);

作者: liuxinran819   发布时间: 2011-07-29

index_aaa和aaa上加的是单引号~

作者: liuxinran819   发布时间: 2011-07-29

sorry~说错了。。。平时都用MySQL Browser改表结构,不怎么写语句的。。。见谅~
是这样:ALTER TABLE table1 ADD INDEX index_aaa(aaa);

作者: liuxinran819   发布时间: 2011-07-29

出错了,BLOB/TEXT column 'aaa' used in key specification without a key length

作者: lilei1789   发布时间: 2011-07-29