我有以下疑问:

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

最佳答案

如果需要一行,可以使用order bylimit。所以,基本思想是:

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;

09-25 21:28