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);

 

 

我们准备在列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)

 

 

 

posted on 2009-12-27 15:54  寂寞的肥肉  阅读(7612)  评论(18编辑  收藏  举报

导航