为什么我在sqlite3中收到以下错误消息

Error: near line 99: near ".": syntax error

SELECT cast.cast_id, cast.cast_name, AVG(movies.score)
FROM movies
INNER JOIN cast ON cast.movie_id = movies.id
WHERE movies.score >= 40
GROUP BY cast.cast_name
HAVING COUNT(movies.id) >= 2
ORDER BY AVG(movies.score) DESC, cast.cast_name DESC
LIMIT 10;


第99行是第一行(SELECT行)

最佳答案

cast是SQLite中的保留字。这对于表或列名来说确实是一个糟糕的选择。保留字列表在documentation中。

如果您不能更改表名,请使用显式别名:

SELECT c.cast_id, c.cast_name, AVG(m.score)
FROM movies m INNER JOIN
     "cast" c
     ON c.movie_id = m.id
WHERE m.score >= 40
GROUP BY c.cast_id, c.cast_name
HAVING COUNT(m.id) >= 2
ORDER BY AVG(m.score) DESC, c.cast_name DESC;


笔记:


表格名称被转义字符包围(反引号和方括号也适用)。
GROUP BYSELECT中具有所有未聚合的列。
别名是表名的缩写。

关于sql - 其他工作脚本中的sqlite错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52350256/

10-15 15:59