MySQL在不同条件下选择N行

MySQL在不同条件下选择N行,mysql,Mysql,假设有一张桌子 | id | value | | 1 | xyz | | 4 | abc | | 5 | test | 我想选择N行,其中id小于一个数字X,但如果此结果集小于N行,我想添加以下行,以确保选择了N行(除非此表中没有足够的行) 例如,我想得到N=2行,其中id不大于X=4,因此我得到1st和2nd行。但是如果我想得到X=4的N=3行,我想要所有三行 我能在一句话中做到这一点并尽量提高效率吗?您想对行进行优先级排序。您可以使用orderby和limit执行此操作。以

假设有一张桌子

| id | value |
|  1 |   xyz |
|  4 |   abc |
|  5 |  test |
我想选择
N
行,其中
id
小于一个数字
X
,但如果此结果集小于
N
行,我想添加以下行,以确保选择了
N
行(除非此表中没有足够的行)

例如,我想得到
N=2
行,其中
id
不大于
X=4
,因此我得到
1st
2nd
行。但是如果我想得到
X=4
N=3
行,我想要所有三行


我能在一句话中做到这一点并尽量提高效率吗?

您想对行进行优先级排序。您可以使用
orderby
limit
执行此操作。以下是一个例子:

select t.*
from table t
order by (x <= @X) desc, x
limit 2;
选择t*
来自表t

order by(是的,它正在工作。不知道order by可以这样使用。