Unknown column ‘xx’ in 'on clause'

这个错误卡住了我很久,,,是写tp3.2的多表查询时报的bug
代码

->join('weibo_userinfo as u ON weibo_comment.uid = weibo_userinfo.uid','LEFT')->field('weibo_comment.*,u.username,u.face50,u.uid')

生成的语句

SELECT weibo_comment.*,u.username,u.face50,u.uid FROM `weibo_comment` LEFT JOIN weibo_userinfo as u ON weibo_comment.uid = weibo_userinfo.uid

报错

 Unknown column ‘weibo_userinfo.uid’ in 'on clause'

???嗯?,这个字段肯定是有的,后来我发现不只是wibo_userinfo.uid,任何一个字段都不行。都不能做为消积条件。。。我又看了表结构,会不会是字段名有空格或者有回车。发现也没有。
这时候我己经蒙逼了。因为我left join weibo_userinfo时给了别名u,然后我就尝试这样

ON weibo_comment.uid=weibo_userinfo.uid//之前的
ON weibo_comment.uid=u.uid//现在的

发现居然没有报错了.
总结在多表连接时用了别名在on时就只能用定义的别名
在使用多表查询时,要注意一点, 两个表的字段如果有重名一定要进行,指定表的操作。where table.column=value
坑。。。。

你可能感兴趣的:(mysql)