如何 return 具有不同 "where" 值的行在 MySQL 中未被满足
How to return row with diffrent value if "where" has not been met in MySQL
如果一个 table 的 ID 与第二个不匹配,我在接收行时遇到问题。
如果 zamowienia.id_telefon 为空或不匹配,我不会收到整行。
我想改为使用“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子句,以避免过滤掉不匹配的记录。请注意,实际上,您的查询有一个不带 ON 子句的 JOIN :这是所有 SQL 方言中的语法错误。
最后,我建议在查询中使用 table 别名:这样更易于阅读和维护。
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)
如果一个 table 的 ID 与第二个不匹配,我在接收行时遇到问题。 如果 zamowienia.id_telefon 为空或不匹配,我不会收到整行。 我想改为使用“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子句,以避免过滤掉不匹配的记录。请注意,实际上,您的查询有一个不带 ON 子句的 JOIN :这是所有 SQL 方言中的语法错误。
最后,我建议在查询中使用 table 别名:这样更易于阅读和维护。
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)