如果从一个表中的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
只需使用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)