【发布时间】:2022-01-19 06:28:30
【问题描述】:
我正在尝试连接两个表以显示与 where 子句匹配的所有行,而不仅仅是与连接匹配的行。这是两个账单表,我正在尝试合并它们,以便两个表中匹配年份和月份的每一行都有几个字段。
SELECT
tblhydrobill.billyear, tblhydrobill.billmonth, tblhydrobill.KWH as elecconsumption, tblhydrobill.CurrentCharges as eleccost,
tblgasdata.cubicft as gasconsumption, tblgasdata.total as gascost
FROM tblhydrobill
FULL JOIN tblgasdata ON tblhydrobill.billyear = tblgasdata.billyear and tblhydrobill.billmonth = tblgasdata.billmonth
WHERE tblhydrobill.meteridnumber = 19 and tblgasdata.buildingid = 19
ORDER BY tblhydrobill.billyear asc, tblhydrobill.billmonth asc
LEFT JOIN 可以正确执行,但只显示两个表上存在月/年数据的结果。我试图让它返回所有行,如果连接的一侧有空字段,如果另一侧没有匹配项,则可以,反之亦然。
使用 FULL JOIN 我得到以下 MySQL 错误:
Error Code: 1054. Unknown column 'tblhydrobill.billyear' in 'field list'
更新:
@jarlh 指出,MySQL 尚不支持 FULL JOIN,谢谢。
【问题讨论】:
-
AFAIK MySQL 没有 FULL OUTER JOIN 支持。
-
另外,您的 WHERE 子句条件使 FULL JOIN 返回常规的 INNER JOIN 结果。将这些条件移至 ON 子句以获得真正的 FULL JOIN 结果。 (在支持它的 dbms 上。)
-
另请注意,表格有列,而不是字段。
-
发布完整的错误信息会有所帮助。
-
由于 MySQL 无法识别
FULL JOIN,'FULL' 很可能被解释为tblhydrobill的别名。所以tblhydrobill.billyear不再是有效的 col 引用。
标签: mysql sql join outer-join