mysql - JDBC 与 Mysql : using mulitple outer joins with where clauses

标签 mysql jdbc

我遇到了以下查询的问题。它在 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/

相关文章:

表更新的 MySQL Cluster 问题

java - context.xml的解释

java - 返回结果集会减慢程序速度

mysql - 使用SQL计算平均客户数

batch-file - 批量MysqlDump错误

java - 奥尼多多 : SQLException occurs: Unknown column 'xxx' in 'field list'

jdbc - 找不到JDBC驱动程序类:com.mysql.jdbc.Driver

java - Postgresql 提交的数据不可见

java - Oracle 数据库更改通知仅每 15 分钟发送一次

mysql - 更新数据库中项目列表的最佳模式