我现在有一个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 解决方案: