SELECT * FROM
companies as C
LEFT JOIN usersSearchCache as UC ON C.id = UC.objectId
WHERE UC.userId = ? AND C.keywords LIKE ?
所以基本上我有一个表:usersSearchCache,它有一个objectId,即objectId 链接到公司表的id,我需要搜索公司的关键字在用户的缓存中匹配的位置。
上面的查询不起作用,但我不明白为什么。
答案 0 :(得分:0)
我们在用户表中有用户,所有这些用户都可以访问对象页面,当他们访问这些页面时,会在表userSearchCache中创建一个新记录。
select * FROM userSearchCache UC
where UC.userId = ?
返回类似
的内容userId,objectId
1,123
1,345
现在我得到的是一个搜索字段,用户在其中插入要搜索的对象的名称,因此当前查询为:
JOIN companies C ON UC.object_id=C.id
userId,objectId,keywords
1,123,"yoga,savate,pilates"
1,345,"tennis,biking,soccer"
找到“骑自行车”,我会使用LIKE'%BIKING%'
select *
FROM userSearchCache UC
JOIN companies C ON UC.object_id=C.id
where UC.userId = ? AND c.keywords LIKE '%'+?+'%'
您的关键字参数是否已包含通配符'%'