SQLite执行查询报错:near "SELECT": syntax error 问题求助
解决SQLite查询语法错误问题
错误原因
你原语句的问题在于COUNT()函数内部直接嵌套SELECT语句的语法不符合SQLite规范,SQLite无法识别这种写法,导致抛出syntax error。另外子查询中deckId=id存在字段歧义,未明确指定id来自decks表,容易引发逻辑错误。
修复方案
方案1:使用相关子查询配合COUNT
调整子查询写法,将其作为COUNT的参数,同时明确指定字段所属表:
SELECT id, title, COUNT((SELECT 1 FROM notes WHERE deckId = decks.id AND lastStatus = 'good')) AS goodNotes FROM decks
这里用SELECT 1代替原有的SELECT lastStatus,因为COUNT只关心行数,不关心具体字段值,这样更高效。
方案2:使用LEFT JOIN + GROUP BY(推荐,性能更优)
通过左连接关联两张表,再按deck分组统计符合条件的记录数:
SELECT d.id, d.title, COUNT(n.id) AS goodNotes FROM decks d LEFT JOIN notes n ON d.id = n.deckId AND n.lastStatus = 'good' GROUP BY d.id, d.title
这种方式避免了子查询嵌套,在数据量较大时性能表现更好,同时用别名d、n明确了字段归属,避免歧义。
内容的提问来源于stack exchange,提问作者Black Sep
相关产品推荐
相关产品推荐

