MySQL如何从表中选择

e0bqpujr  于 2023-04-10  发布在  Mysql
关注(0)|答案(2)|浏览(172)

我有一个食物表:食物:

ID | NAME | GOES_WELL_WITH   
1    APPLE        3   
2    BANANA       NULL    
3    ORANGE       2    
4    BLUEBERRY    5    
5    GRAPE        4    
6    LEMON        1

现在我想选择食物的名字作为名字,食物的名字与之相配。goes_well_with总是在表中有它对应的id值(如果它是null,那么它是null)。

APPLE     ORANGE    
BANANA    NULL    
ORANGE    BANANA    
BLUEBERRY GRAPE    
GRAPE     BLUEBERRY    
LEMON     APPLE

现在这里的异常是如果goes_well_with是NULL你必须包含它,看看上面的例子中的BANANA。我知道它必须是某种自连接或左连接,我实际上实现了以下,但没有BANANA NULL异常,我只是不知道如何包含它。有什么建议吗?

qncylg1j

qncylg1j1#

您可以使用self left join来执行此操作,如下所示:

select f.NAME, t.NAME as GOES_WELL_WITH
from food f
left join food t on f.GOES_WELL_WITH = t.ID

Demo here

wlsrxk51

wlsrxk512#

您可以使用相关子查询,并在有NULL的地方使用 coalesce

select name, coalesce((
    select name 
    from food f2 
    where f2.id = f.Goes_Well_With
), 'None') as GoesWellWith
from food f;

相关问题