SQL中不通过max函数求最大值
今天看了下《数据库系统概念》中的关系模型,里面一节的关系运算让我想到了SQL语句中不用max函数
便可以求得某列的最大值。现假设有表如下所示:
1 create table MY_MAX
2 (
3 id int,
4 scores int
5 )
6 insert into MY_MAX values(1,1);
7 insert into MY_MAX values(2,2);
8 insert into MY_MAX values(3,3);
9 insert into MY_MAX values(4,4);
10 insert into MY_MAX values(5,5);
2 (
3 id int,
4 scores int
5 )
6 insert into MY_MAX values(1,1);
7 insert into MY_MAX values(2,2);
8 insert into MY_MAX values(3,3);
9 insert into MY_MAX values(4,4);
10 insert into MY_MAX values(5,5);
我们准备在列scores上求最大值。
首先求出所有的非最大值,然后利用集合的差运算即可。
计算所有的非最大值,要利用表自身的笛卡尔积.
SQL语句如下:
1 select scores from MY_MAX where scores not in
2 (select A.scores from MY_MAX A,MY_MAX B where A.scores<B.scores)
2 (select A.scores from MY_MAX A,MY_MAX B where A.scores<B.scores)