首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不用min()查找MIN

不用min()查找MIN
EN

Stack Overflow用户
提问于 2014-11-06 02:59:24
回答 5查看 4.9K关注 0票数 0

我正在寻找学生谁有最小的分数,这将是以下查询的结果。但是,我被要求不使用MIN()来编写查询。花了几个小时,但我找不到另一种解决办法。

代码语言:javascript
运行
复制
select s.sname
from student s
where s.score = 
    (select min(s2.score) 
    from score s2)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-11-06 03:13:48

这是一种方法,即使两名学生的分数相同,这种方法也能起作用。

代码语言:javascript
运行
复制
SELECT distinct s1.sname
FROM student s1
  LEFT JOIN student s2
    ON s2.score < s1.score 
WHERE s2.score IS NULL

以下是使用极限的方法,该方法将返回分数最低的学生,但如果他们中的多人有相同的分数,则只有其中一人。

代码语言:javascript
运行
复制
select sname
from student
order by score asc
limit 1
票数 3
EN

Stack Overflow用户

发布于 2014-11-06 03:30:36

下面是JOIN方法的一个可能的替代方案:

代码语言:javascript
运行
复制
select sname from student where score in 
   (select score from student order by score asc limit 1)
票数 1
EN

Stack Overflow用户

发布于 2014-11-06 04:03:30

代码语言:javascript
运行
复制
create table student (name varchar(10), score int);
insert into student (name, score) values('joe', 30);
insert into student (name, score) values('jim', 88);
insert into student (name, score) values('jack', 22);
insert into student (name, score) values('jimbo', 15);
insert into student (name, score) values('jo bob',15);

/* folks with lowest score */
select name, score from student where not exists(select 1 from student s where s.score < student.score);

/* the actual lowest score */
select distinct score from student 
where not exists(select 1 from student s where s.score < student.score);

请注意,不存在可能是残酷的低效,但它将在一小部分完成工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26771001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档