如果来自一个表的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
答案 0 :(得分:0)
只需使用LEFT JOIN而不是(INNER)JOIN。
因此,您需要将联接条件从WHERE子句移到联接的ON子句,以避免滤除不匹配的记录。请注意,查询实际上是一个不带ON子句的JOIN:这是所有SQL方言中的语法错误。
最后,我建议在查询中使用表别名:这样可以更易于阅读和维护。
SELECT
z.*,
t.numer
FROM
crm2018.zamowienia AS z
LEFT JOIN crm2018.telefon AS t
ON z.id_telefon = t.id_telefon
如果给定crm2018.zamowienia的crm2018.telefon中没有可用记录,则该记录仍将显示,来自crm2018.telefon的所有列均显示NULL值。
如果需要,您可以使用COALESCE()函数将NULL值设为0,例如:
COALESCE(t.numer, 0)