跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求一个 sql 语句或解决办法
未分類
3 10 月 2020

求一个 sql 语句或解决办法

求一个 sql 语句或解决办法

資深大佬 : mxm145 1

有两个表 A,B 。A 表存的文章标题、发布时间这些信息,B 表存的是文章的内容,两个表的 ID 是一致的。现在的问题是:有关键词搜索的时候先在 A 表的标题里面进行搜索,再到 B 表的文章内容字段里面进行搜索,最后要把两个结果合并起来再按照 A 表的发布时间进行倒排。用了 SQL 的 union 搜索,在排序的时候就会把两个结果混合在一起,需要把 A 表的搜索结果按照时间排序放在前面,不知道各位有没有啥办法。

大佬有話說 (8)

  • 資深大佬 : RedBeanIce

    感觉内容搜索,标题搜索,已经是 ES ????

  • 資深大佬 : LeeSeoung

    A 排序 union all B 排序

  • 資深大佬 : DonaldY

    查询 sql 时,多加个字段来标识数据源来自哪,order by 这个字段。

  • 資深大佬 : jiorix

    select aa.*
    from
    (
    select a.*, 1 as queryType
    from a
    where title like ‘%关键字%’
    union
    select a.*, 2 as queryType
    from a
    where a.id in (
    select id from b where content like ‘%关键字%’
    )
    ) as aa
    order by queryType, ….

  • 主 資深大佬 : mxm145

    @RedBeanIce 还是 mysql,没有用 es
    @LeeSeoung 我查了 union 没办法用两个 order
    @jiorix 多谢大佬的代码,思路我懂了

    多谢各位的回复

  • 資深大佬 : liuky

    select a.*
    from A as a
    inner join B as b on a.id = b.id
    where a.title like ‘%key%’ and b.content like ‘%key%’
    order by a.createtime desc

  • 主 資深大佬 : mxm145

    @liuky 这个跑出来的数据是 title 和 content 都有关键词的结果,我想要的是只要两个其中一个的都要显示出来,而且按照 title 匹配到的在前面,content 匹配到的在后面。如果把你的 and 改成 or 的话也不行

  • 主 資深大佬 : mxm145

    我最后使用的是两个子查询 union 来实现的,参考这个: https://www.jianshu.com/p/2a53c2fdb042

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具