我目前遇到以下问题:
我有一个MySQL查询:
SELECT account.id as id, `cname`, `username`, `state`, `dow`
FROM account
LEFT JOIN zeitplanung
ON account.id = zeitplanung.user_id
WHERE account.hide = 0
and ifnull(zeitplanung.kw,43) = 43
and ifnull(zeitplanung.year, 2017) = 2017;
如果我选择了正确的年份和kw,它返回用户名和提到的值,如果联接表中没有条目,则返回表帐户中的值,以及所有其他值值为NULL
。
但它不返回用户名,以防表中有条目" zeitplanung"哪个不符合自助餐厅(kw,year)。
如何将该查询写入:
答案 0 :(得分:1)
问题是您在NULL
子句中过滤掉WHERE
结果。要保留它们,请将OUTER
表的任何过滤条件移到其ON
子句:
SELECT account.id as id, `cname`, `username`, `state`, `dow`
FROM account
LEFT JOIN zeitplanung
ON account.id = zeitplanung.user_id
AND zeitplanung.kw = 43
AND zeitplanung.year = 2017
WHERE account.hide = 0;