2017-08-04 9 views
0

私はこのようなテーブルがあります。2つの列を結合して検索するにはどうすればよいですか?

-- users 
+----+--------+--------+ 
| id | f_name | l_name | 
+----+--------+--------+ 
| 1 | Jack | Smith | 
| 2 | Peter | Hall | 
| 3 | John | Price | 
+----+--------+--------+ 

をそして、これは私のクエリです:

SELECT u.*, 
     match(f_name) against(:input) f_name_order, 
     match(l_name) against(:input) l_name_order, 
     match(f_name, l_name) against(:input) both_order, 
FROM users u 
WHERE match(f_name, l_name) against(:input) 
ORDER BY both_order * 4 DESC, l_name_order * 2 DESC, f_name_order DESC 
LIMIT 20; 

は今、私は入力がjohn priときに、テーブルの最後の行を選択します。現在のクエリが一致しません。どうやってやるの?

+0

あなたは多分サブクエリを実行できますか?サブクエリのコンカットを選択し、サブクエリの連結カラムを照合しますか? – user3012759

答えて

0

あなたは連結を使用することができますなど

select u.* 
from users u 
where concat(f_name, ' ', l_name) like concat('%', :input, '%') 
+0

*フルテキスト*ではできませんか? –

+0

サンプルを見ています。私はフルテキストの方法は役に立たないと思います..とにかく..試してみてください – scaisEdge

関連する問題