php 复杂的mysql查询问题

zzzyeukh  于 2022-12-25  发布在  PHP
关注(0)|答案(1)|浏览(121)

我目前正在进行实时搜索,遇到了以下问题:
下面的查询可以工作,但我更愿意从表“bb1_threads”中收集“topic”和“threadid”列,而从表“bb1_posts”中只收集“message”列

SELECT posttopic AS topic, threadid FROM bb".$n."_posts WHERE message LIKE '%$search_string%' OR posttopic LIKE '%$search_string%' LIMIT 1

下面的查询也可以工作,但是我不能用这种方法从表bb1_posts中搜索字段“message”:

SELECT topic, threadid FROM bb".$n."_threads WHERE topic LIKE '%$search_string%' LIMIT 1

因此,我想拥有并尝试构建几个小时的查询是:

  • 从表“bb1_threads”中选择字段“threadid”和“topic”
  • 在表“bb1_threads”中搜索字段“主题”
  • 在表格“bb1_posts”中搜索字段“消息”
  • 按最佳匹配对结果进行排序。(如果搜索结果更接近列“message”中的字符串,则不使用该字符串,否则应使用“topic”中的搜索结果)

如果有人能发布一个现成的查询,我将非常感激!圣诞快乐:)

rekjcdws

rekjcdws1#

这可能行得通。
1.按message搜索bb1_posts,并将1指定为search_rank
1.按topic搜索bb1_thread,并将2指定为search_rank
1.求两者的并集结果,按search_rank排序并选取第一行

select threadid  as threadid,
       posttopic as topic,
       1         as search_rank
  from bb1_posts
 where message like '%$search_string%'
 union all
select threadid  as threadid,
       topic     as topic,
       2         as search_rank
  from bb1_threads
 where topic like '%$search_string%'
 order by search_rank
 limit 1;

相关问题