mysql加入其他表搜索

时间:2011-11-25 20:41:11

标签: mysql sql join left-join

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,我需要搜索公司的关键字在用户的缓存中匹配的位置。

上面的查询不起作用,但我不明白为什么。

1 个答案:

答案 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 '%'+?+'%'

您的关键字参数是否已包含通配符'%'