回答

收藏

如何在MySQL中优先搜索多个列?

技术问答 技术问答 276 人阅读 | 0 人回复 | 2023-09-12

我现在有一个PHP函数(codeigniter),该函数接受查询字符串(来自post),并返回相关MySQL行,如下所示:9 n+ `6 m# u" g) K) k6 ^
$term = $this->input->post("query");$rows = $this->db->query("SELECT id,title as 'desc' ,abbreviation ,etc FROM shows WHERE abbreviation LIKE '%".$term."%' OR title LIKE '%".$term."%' OR etc LIKE '%".$term."%'  LIMIT 10; ")->result_array();这是可行的,但可以说我的桌子是这样的:" F) N+ r* O4 S2 H6 H- a
id  title                    abbreviation--  ----------------------   ------------1   The Big Bang Theory      TBBT2   How I Met Your Mother    HMYM3   a show called tbbt hmym  ASCTM现在,当用户搜索时tbbt,它将首先返回第三行。但我希望缩写作为主要参数。6 ?; R4 J; X  C( F5 L3 O5 |! K  R
因此,如果缩写匹配,请先返回,然后查找标题栏。
7 h5 I. |" e3 ^0 a我想我可以用PHP这样做:& d2 ?, U1 o# O) J+ ?
// pseudo-code : $abbreviation_matches = result("bla bla WHERE abbreviation LIKE term AND NOT title like term");$title_matches = result("bla bla WHERE NOT abbreviation LIKE term AND title LIKE term");$result = append($abbreviation_matches ,$title_matches);但我担心它不会那么有效,因为它涉及两个独立的SQL查询。那么,有没有更有效的方法可以做到这一点呢?最好在查询中?
! ?2 b4 ~( Y+ h实际情况是有四列,但只有一列有优先级,所以其他列的顺序并不重要。
1 o8 o) ?9 J" J& f谢谢你的帮助!4 k; t( D; l# Y' k
                                                                ! p& G9 [& A& t& ^% d  n1 L
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则