我遇到了以下查询的问题。它在 mysql workbench 中工作,但当我在带有 jdbc 的 java 中使用它时却不行。我不断收到语法错误。
这里是查询:
"SELECT f.ISBN, f.text, m.title, AVG(r.rating) as score" +
" FROM RATES r LEFT OUTER JOIN FEEDBACK f ON (f.fid = r.fid) WHERE f.ISBN = ? " +
"LEFT OUTER JOIN MOVIE m ON (m.ISBN = f.ISBN) " +
"GROUP BY ISBN " +
"ORDER BY score DESC LIMIT ? ";
我做了一些搜索并找到了 {oj } 的 jdbc 转义语法。但是我会得到另一个语法错误。
我最近遇到的错误是:
HTTP Status 500 - javax.servlet.ServletException:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT OUTER JOIN MOVIE m ON (m.ISBN = f.ISBN) GROUP BY ISBN ORDER BY score DESC L' at line 1
我希望对此有一些新的看法,因为我似乎看不到我的问题。
提前致谢!
最佳答案
我认为 WHERE
子句必须放在 JOINING
后面。下一个问题是 select 子句中的列数等于 group 子句中的列数(除了 avg、count 等函数)。所以你需要像这样更正你的查询:
SELECT f.ISBN, f.text, m.title, AVG(r.rating) as score
FROM RATES r
LEFT OUTER JOIN FEEDBACK f ON (f.fid = r.fid)
LEFT OUTER JOIN MOVIE m ON (m.ISBN = f.ISBN)
WHERE f.ISBN = ?
GROUP BY f.ISBN, f.text, m.title
ORDER BY score DESC LIMIT ?
关于mysql - JDBC 与 Mysql : using mulitple outer joins with where clauses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15605045/