sql >> Database teknologi >  >> RDS >> Oracle

SQL - Returner rækker med de fleste kolonnematches

Du kan bruge funktionen rank() til det:

SQLFiddle

select name, color1, color2, color3, prize 
  from (
    select t.*, rank() over (order by decode(color1, 'Red', 1, 0) 
        + decode(color2, 'Blue', 1, 0) + decode(color3, 'Green', 1, 0) desc) rnk
      from t)
  where rnk = 1

Dette returnerer række eller rækker med flest match.



  1. Udskriv en enkelt SQL-forespørgsel (Yii 1.x)

  2. Vælg erklæring fra flere tabeller med variabel input

  3. Hvordan kører man kun Djangos testdatabase i hukommelsen?

  4. MySQL - generer en liste over mest 'populære' poster