Sql-条件子查询

Sql-条件子查询,sql,Sql,假设我有一个有三列的表,a、b和c。 我想用三个值查询此表,方法如下: 选择a=值1的所有行 如果这样的行少于10行,则返回这些行,否则选择其中b=值2的所有行 对c和值3重复上述步骤 是否可以在单个查询中执行此操作?尝试此操作(假设使用SQL Server): 这充满了家庭作业的味道。谢谢你-是的,我希望你能对否决票发表评论。我看不出这有什么错。几乎就是我要找的,除了如果有超过10个匹配a和b的结果,那么所有匹配a、b和c的结果都应该返回,即使超过10个。很抱歉没有说清楚。上面提到的是你原来的

假设我有一个有三列的表,a、b和c。 我想用三个值查询此表,方法如下:

选择a=值1的所有行

如果这样的行少于10行,则返回这些行,否则选择其中b=值2的所有行

对c和值3重复上述步骤

是否可以在单个查询中执行此操作?

尝试此操作(假设使用SQL Server):


这充满了家庭作业的味道。谢谢你-是的,我希望你能对否决票发表评论。我看不出这有什么错。几乎就是我要找的,除了如果有超过10个匹配a和b的结果,那么所有匹配a、b和c的结果都应该返回,即使超过10个。很抱歉没有说清楚。上面提到的是你原来的问题。我不知道你的评论是什么意思,如果需要请详细解释。如果您想要所有结果,而不是仅10个,则可以删除“前10个”。很抱歉,让我尝试更清楚地表达:如果有10个或a=value1的条目,则返回它们。如果a=value1的条目多于10个,但a=value1和b=value2的条目少于10个,则返回这些条目。否则,返回a=value1、b=value2和c=value3的所有条目,即使这些条目大于10。
SELECT TOP 10 *
FROM YourTable X
ORDER BY (CASE WHEN X.a = value1 THEN 0 ELSE 1 END),
        (CASE WHEN X.b = value2 THEN 0 ELSE 1 END),
        (CASE WHEN X.c = value3 THEN 0 ELSE 1 END)