样品表-
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 | subj_code |优先
1 | c45 | 0
1 | b68 | 0
多个行可以具有相同的
priority
,但是在这种情况下,rollno
必须不同。在这种情况下,查询会给出正确的结果-
从优先级中选择subj_code,其中rollno = 1 AND优先级=(
从优先级中选择最小(优先级)
)
但在这种情况下不给出结果-
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