【问题标题】:mysql join other table searchmysql加入其他表搜索
【发布时间】:2011-11-25 20:41:10
【问题描述】:
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,我需要在用户的缓存中搜索公司的关键字在哪里匹配。

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

【问题讨论】:

  • 你能发布错误和一些你用来执行这个命令的代码吗?以及您提供的参数..以及您的预期结果?
  • 您是遇到错误还是没有结果?您可以添加一个完整的查询并替换 ? 吗?
  • 我没有收到任何错误或任何结果,但我确定参数是正确的。
  • 如果您可以发布一些代码供我们查看,这将有所帮助。我不知道还有什么可以帮助您,除非询问您是否尝试手动运行带有参数的命令mysql,如果这些表有任何数据可以满足您的查询要求?
  • 如果您在 WHERE 子句中引用 UC 别名(就像您一样),那么您的 LEFT JOIN 实际上充当常规 JOIN。

标签: mysql sql join left-join


【解决方案1】:

我们在用户表中获取了用户,所有这些用户都可以访问对象的页面,当他们访问这些页面时,会在表 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 '%'+?+'%'

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2016-11-18
    • 2012-05-06
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多