TypeORM SQL查询语法错误:按标题和内容搜索失败求助
SQL查询语法错误修正方案
存在的语法问题
- SELECT子句末尾多余逗号:
select p.*,中的逗号无意义,需删除,因为没有后续字段需要查询。 - WHERE子句逻辑错误:原语句
AND p.title ilike OR存在两处问题:一是ilike运算符未指定匹配值;二是AND与OR的优先级未处理,导致逻辑完全不符合需求。正确逻辑应为已发布的帖子,且标题或内容匹配搜索关键词,需用括号包裹OR条件,确保逻辑优先级正确。
修正后的SQL查询语句
select p.* from post p left join vote v on p.id = v.post_id and v.user_id = $1 where p.is_published = true AND (p.title ilike $2 OR p.context::text ilike $2) limit 5 offset $3
修正后的TypeORM代码
const posts = await AppDataSource.query(` select p.* from post p left join vote v on p.id = v.post_id and v.user_id = $1 where p.is_published = true AND (p.title ilike $2 OR p.context::text ilike $2) limit 5 offset $3 `, [req.user.id, `%${req.query.q}%`, req.query.skip])
内容的提问来源于stack exchange,提问作者Butonix
相关产品推荐
相关产品推荐

