sql >> Databáze >  >> RDS >> Mysql

Objednat SQL podle nejsilnějšího LIKE?

Pokud chcete říct, že col_1 je relevantnější než col_2 a tak dále, pak:

select *
      ,case when col_1 like '%$keyword%' then 1
            when col_2 like '%$keyword%' then 2
            when col_3 like '%$keyword%' then 3
       end as [priority]
  from table_name
 where col_1 like '%$keyword%'
    or col_2 like '%$keyword%'
    or col_3 like '%$keyword%'
 order by [priority]

Pokud jste mysleli, že sloupec odpovídá nejvíce, pak :

select *
      ,(case when col_1 like '%$keyword%' then 1 else 0 end) +
      ,(case when col_2 like '%$keyword%' then 1 else 0 end) +
      ,(case when col_3 like '%$keyword%' then 1 else 0 end) as [priority]
  from table_name
 where col_1 like '%$keyword%'
    or col_2 like '%$keyword%'
    or col_3 like '%$keyword%'
 order by [priority] desc


  1. Jaký je nejlepší způsob, jak vytvořit a naplnit číselnou tabulku?

  2. MySQL ovladač pro Rails ve Windows 7 x64

  3. Získejte pouze záznamy vytvořené dnes v laravel

  4. Místo spouštěče v SQL Server ztrácí SCOPE_IDENTITY?