示例表 -
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
回报?
注意-
无论
subj_code
字段如何,特定rollno
的不同优先级都不能具有相同的值。 即。下表是不可能的 -罗尔诺 | subj_code | 优先 1 |C45 |0 1 |B68 |0
多行可以具有相同的
priority
但在这种情况下,rollno
需要不同。在这种情况下,查询给出正确的结果 -
从优先级中选择subj_code,其中 rollno = 1 且优先级 = ( 从优先级中选择最小(优先级( )
但在这种情况下没有给出结果——
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