sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Hur man får sökresultat med korrekt relevans

Du kan använda strängfunktioner, såsom:

select id, name
from subjects
where name like concat('%', @search, '%')
order by 
  name like concat(@search, '%') desc,
  ifnull(nullif(instr(name, concat(' ', @search)), 0), 99999),
  ifnull(nullif(instr(name, @search), 0), 99999),
  name;

Detta ger dig alla poster som innehåller @search. Först de som har det i början, sedan de som har det efter ett tomrum, sedan efter platsen för förekomsten, sedan alfabetiskt.

name like concat(@search, '%') desc använder förresten MySQL:s booleska logik. 1 =sant, 0 =falskt, så att sortera detta fallande ger dig sant först.

SQL-fiol:http://sqlfiddle.com/#!9/c6321a/1



  1. En datamodell för peer-to-peer-utlåningsplattform

  2. MySQL för Visual Studio 2012/2013

  3. Python:Hur får jag tid från ett datetime.timedelta-objekt?

  4. Vilket är bättre:mysql_connect eller mysql_pconnect