样品表-
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
)
答案 0 :(得分:0)
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