假设有一个表格为
| id | value |
| 1 | xyz |
| 4 | abc |
| 5 | test |
我想选择N
行id
小于X
的行,但如果此结果集小于N
行,我希望添加以下行确保选择N
行(除非此表中没有足够的行)。
例如,我希望获得N=2
行id
不大于X=4
的行,因此我获得1st
行和2nd
行。但如果我想为N=3
获取X=4
行,我想要所有这三行。
我可以在一个声明中这样做并尝试提高效率吗?
答案 0 :(得分:1)
您希望确定行的优先级。您可以使用order by
和limit
执行此操作。这是一个例子:
select t.*
from table t
order by (x <= @X) desc, x
limit 2;