mysql - 选择元素最小值的行(如果表中存在单行/多行)
问题描述
样品表 -
rollno | subj_code | priority
1 | c45 | 0
1 | b68 | 1
1 | a98 | 2
2 | a98 | 0
我想选择一个最小值为的行priority
,我正在使用下面的查询,如果数据库中有多行(如 for 的情况rollno = 1
),它的工作正常。
SELECT subj_code FROM priorities WHERE rollno = roll AND priority = (
select min(priority) from priorities
)
但在我的表中,可能只有一个 a 条目,rollno
这意味着只有一行和priority
(如rollno
= 2 的情况),在这种情况下,上述查询不会subj_code
返回。在这种情况下如何获得subj_code
回报?
笔记 -
无论字段如何,特定的不同优先级
rollno
不能具有相同的值。subj_code
IE。下表是不可能的 -罗诺 | 主题代码 | 优先级 1 | c45 | 0 1 | b68 | 0
多行可以相同
priority
,但rollno
在这种情况下需要不同。在这种情况下,查询给出了正确的结果 -
SELECT subj_code FROM priority WHERE rollno = 1 AND priority = ( select min(priority) from priority )
但在这种情况下没有给出结果 -
SELECT subj_code FROM priorities WHERE rollno = 2 AND priority = (
select min(priority) from priorities
)
解决方案
with minprior as(
Select rollno as 'roll'
,min(priority) as 'minpri'
FROM priorities
Group by rollno)
Select rollno
,subj_code
,priority
From priorities inner join minprior
on rollno = roll
and priority = minpri
推荐阅读
- php - PHP/IMAP : 内容邮件 MIME 转换
- django - 减少 Django 序列化时间
- angular - 在“createComponent”中捕获编译器错误
- apache-spark - Oozie Spark HBase 作业,无效凭据异常
- cordova - 将自定义配置添加到 AndroidManifest.xml
- r - Left_join 与 Df1 和相等数据帧的列表
- .net - Office / Word 互操作失败并出现“找不到元素”错误
- java - 在不直接处理 JavaMail API 的情况下,用 Java 阅读电子邮件消息的最简单库是什么?
- android - Android 资源编译失败 - Daemon: AAPT2 aapt2-3.2.1-4818971-windows Daemon #0
- docker - 使用 Docker 和工件在 Beanstalk 上部署新的应用程序版本