使用SQL语句找到表中某列的第几名
SQL> select * from t1;
ID AGE
---------- ----------
1 20
2 19
3 19
4 21
5 22
6 27
6 rows selected.
现在要求找出表中第三年轻的学生
方法1
第三年轻,也就意味着只有两个人比他小
SQL> select t11.*
2 from t1 t11
3 where 2=(select count(*) from t1 t22 where t11.age>t22.age);
ID AGE
---------- ----------
1 20
方法2
使用窗口函数
SQL> select id,age
2 from
3 (
4 select id,age,
5 dense_rank() over(order by age) dr
6 from t1
7 )
8 where dr=3;
ID AGE
---------- ----------
4 21
奇怪了,这里结果为什么不一样呢?回头看一下表中的数据,有两条age=19的数据,这就是原因。下面换rank
SQL> select id,age
2 from
3 (
4 select id,age,
5 rank() over(order by age) dr
6 from t1
7 )
8 where dr=3;
 
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
这几天一直被中文乱码问题困扰,中文数据插入到My Sql中很正常,在Command client line中也能正常显示,可从数据库中读到JSP页面上时,就变成“火星文”了。
于是上网查询,也看到好多方法:有的说把my.ini中default-character-set=latin1改为default-character-set=utf8,有 ......
如果原来的数据库可用,分离数据库后,只附加数据文件,不附加日志
如果不可用,只能慢慢等还原操作完成了
日志文件太大了,应该定期整理日志
--压缩日志及数据库文件大小
&n ......
table a(id, type):
id type
----------------------------------
1 1
2 1
3 &n ......