根据条件选择不同的结果

ca1c2owp  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(401)

我有以下疑问:

select a,b,c,firstConditionKey,secondConditionkey from 
(select ..... - big query - ..... ) as main;

我需要的是从查询中返回一行 firstConditionKey 如果不为空,则该行将如下所示 min(firstConditionKey) 因为我不在乎哪一排,只要那一排有 firstConditionKey ,否则,如果没有包含 firstconditionKey ,从具有 secondConditionKey 或者什么都没有。

a   b   c   firstConditionKey   secondConditionKey
x   x   x          1                    1
x   x   x          2                    2
x   x   x                               2

a   b   c   firstConditionKey   secondConditionKey
x   x   x                                
x   x   x                               2
x   x   x                               2

所以在第一种情况下,我会返回第一行。在第二种情况下,我将返回第二行。
基本上,如果和 firstConditionKey ,返回找到的第一行,否则返回第一行 secondConditionKey .

kpbpu008

kpbpu0081#

如果你想要一排,你可以用 order by 以及 limit . 所以,基本思想是:

select a, b, c, firstConditionKey, secondConditionkey
from (select ..... - big query - ..... ) main
order by (firstConditionKey is not null) desc,
         (secondConditionKey is not null) desc
limit 1;

这并不能解决最后一个条件:如果两个键都是空的,则不返回任何行 NULL ,那么让我们这样说:

select a, b, c, firstConditionKey, secondConditionkey
from (select ..... - big query - ..... ) main
where firstConditionKey is not null or secondConditionKey is not null
order by (firstConditionKey is not null) desc,
         (secondConditionKey is not null) desc
limit 1;

相关问题