Con*_*eet 12 mysql sql join mysql-error-1054
我有以下MySQL查询:
SELECT posts.id, posts.name, LEFT(posts.content, 400), posts.author, posts.date, users.display_name,
GROUP_CONCAT(tags.tag ORDER BY tag_linking.pid ASC SEPARATOR ",") update_tags
FROM posts, tag_linking, tags
INNER JOIN `users`
ON posts.author=users.id;
WHERE tag_linking.pid = posts.id
AND tags.id = tag_linking.tid
ORDER BY posts.date DESC
Run Code Online (Sandbox Code Playgroud)
哪个,你可以看到,连接三个表等等.无论如何,问题是它给出了一个错误:
ERROR CODE:
SQL Error (1054): Unknown column 'posts.author' in 'on clause'
Run Code Online (Sandbox Code Playgroud)
即使在另一个页面上使用这个更简单的查询工作:
SELECT posts.id, posts.name, LEFT(posts.content, 400), posts.author, posts.date, users.display_name FROM `posts`
INNER JOIN `users`
ON posts.author=users.id
Run Code Online (Sandbox Code Playgroud)
有没有人想过为什么会这样?谢谢你的帮助.
Hai*_*vgi 41
因为你的混合连接语法
但是,逗号运算符的优先级小于INNER JOIN,CROSS JOIN,LEFT JOIN等.如果在存在连接条件时将逗号连接与其他连接类型混合,则可能会出现'on子句'中未知列'col_name'形式的错误.有关处理此问题的信息将在本节后面给出.
解决方案是:
要允许处理连接,请使用括号显式地对前两个表进行分组,以便ON子句的操作数为(t1,t2)和t3:
SELECT*FROM(t1,t2)JOIN t3 ON(t1.i1 = t3.i3);
或者,避免使用逗号运算符并改为使用JOIN:
SELECT*FROM t1 JOIN t2 JOIN t3 ON(t1.i1 = t3.i3);
| 归档时间: |
|
| 查看次数: |
30982 次 |
| 最近记录: |