如果在MySQL中没有遇到“there”,如何返回具有不同值的行

问题描述 投票:0回答:1

如果从一个表中的id与第二个表不匹配,我接收行有问题。如果zamowienia.id_telefon为null或不匹配,我不会重新整行。我想用“0”或空值获取列crm2018.telefon.numer。请帮忙 :)

我尝试了类似的东西,但它是明显的语法错误:

SELECT 
    crm2018.zamowienia.*,
    crm2018.telefon.numer 
FROM
    crm2018.zamowienia 
    JOIN crm2018.telefon 
WHERE
    if (zamowienia.id_telfon != "0")  zamowienia.id_telefon = telefon.id_telefon else crm2018.telefon.numer as "0"

这是工作代码,但缺少行。

SELECT 
    crm2018.zamowienia.*,
    crm2018.telefon.numer 
FROM 
    crm2018.zamowienia 
    JOIN crm2018.telefon 
WHERE 
    zamowienia.id_telefon = telefon.id_telefon
mysql sql if-statement join where
1个回答
0
投票

只需使用LEFT JOIN而不是(INNER)JOIN。

因此,您需要将连接条件从WHERE子句移动到连接的ON子句,以避免过滤掉不匹配的记录。请注意,实际上,您的查询具有JOIN而没有ON子句:这是所有SQL方言中的语法错误。

最后,我建议在查询中使用表别名:这使得它更易于阅读和维护。

SELECT 
    z.*,
    t.numer 
FROM
    crm2018.zamowienia AS z 
    LEFT JOIN crm2018.telefon AS t
        ON z.id_telefon = t.id_telefon

如果crm2018.telefon中没有可用于给定crm2018.zamowienia的记录,则仍会显示记录,所有列都来自crm2018.telefon,显示NULL值。

如果需要,可以使用COALESCE()函数将NULL值转换为0,如:

COALESCE(t.numer, 0)
© www.soinside.com 2019 - 2024. All rights reserved.