选择元素最小值的行(如果表中有单个/多个行)

rhfm7lfc  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(340)

样品表-

rollno | subj_code | priority
1      | c45       | 0
1      | b68       | 1
1      | a98       | 2
2      | a98       | 0

我要选择最小值为的行 priority 为此,我使用下面的查询,如果数据库中有多行,它的工作正常(例如 rollno = 1 ).

SELECT subj_code FROM priorities WHERE rollno = roll AND priority = (
    select min(priority) from priorities
)

但在我的表中,有可能只有一个条目 rollno 也就是说只有一行 priority (例如 rollno =2)在这种情况下,上述查询不会给出 subj_code 作为回报。如何获得 subj_code 在这种情况下作为回报?
注-
不同的优先级 rollno 不能有相同的值,不管 subj_code 现场。下表是不可能的-
rollno |主题代码|优先级1 | c45 | 0 1 | b68 | 0
多行可以具有相同的 priority 但是 rollno 在这种情况下需要有所不同。
在这种情况下,查询给出了正确的结果-
从priorities(优先级)中选择subg\u code,其中rollno=1和priority=(从priorities中选择min(优先级))
但在这种情况下没有给出结果-

SELECT subj_code FROM priorities WHERE rollno = 2 AND priority = (
        select min(priority) from priorities
    )
wz3gfoph

wz3gfoph1#

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

相关问题