jan*_*jes 3 mysql sql join inner-join
我正在尝试以下MySQL查询来获取一些数据:
SELECT m.*, t.*
FROM memebers as m, telephone as t
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber
WHERE mf.function = 32
Run Code Online (Sandbox Code Playgroud)
但我总是得到以下错误:
#1054 - Unknown column 'm.id' in 'on clause'
Run Code Online (Sandbox Code Playgroud)
该列确实存在,只有一个表可以正常查询(例如,当我删除电话时)
有人知道我做错了什么吗?
Seb*_*bas 15
根据此链接,在构建联接时不应混淆两种符号.您用于加入的逗号 memebers as m, telephone as t
以及后续调用将inner join
触发未知列错误.
要处理它,请使用CROSS/INNER/LEFT JOIN
逗号代替.
以前,逗号运算符(,)和JOIN都具有相同的优先级,因此连接表达式t1,t2 JOIN t3被解释为((t1,t2)JOIN t3).现在JOIN具有更高的优先级,因此表达式被解释为(t1,(t2 JOIN t3)).此更改会影响使用ON子句的语句,因为该子句只能引用连接操作数中的列,并且优先级的更改会更改这些操作数的解释.
出于教学目的,我正在添加查询,我认为应该是:
SELECT m.*, t.*
FROM memebers as m
JOIN telephone as t
JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
JOIN mitgliedTelephone as mt ON m.id = mt.memeber
Run Code Online (Sandbox Code Playgroud)
既然你不参加t
和m
,最终的结果将是一个笛卡尔乘积; 你可能希望它被修改.
我希望它有所帮助.