Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobierz nazwę kolumny, która ma maksymalną wartość w wierszu sql

To powinno wystarczyć:

select
  userid,
  max(case when rank=1 then name end) as `highest value`,
  max(case when rank=2 then name end) as `2nd highest value`,
  max(case when rank=3 then name end) as `3rd highest value`,
  max(case when rank=4 then name end) as `4th highest value`
from
(
  select userID, @rownum := @rownum + 1 AS rank, name, amt from (
    select userID, Buitenland as amt, 'Buitenland' as name from newsarticles where userID = 9 union
    select userID, Economie, 'Economie' from newsarticles where userID = 9 union
    select userID, Sport, 'Sport' from newsarticles where userID = 9 union
    select userID, Cultuur, 'Cultuur' from newsarticles where userID = 9 union
    select userID, Wetenschap, 'Wetenschap' from newsarticles where userID = 9 union
    select userID, Media, 'Media' from newsarticles where userID = 9
  ) amounts, (SELECT @rownum := 0) r
  order by amt desc
  limit 4
) top4
group by userid

Demo:http://www.sqlfiddle.com/#!2/ff624/11



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmienić numer początkowy automatycznego przyrostu?

  2. Czy istnieje polecenie MySQL do zaimplementowania czegoś takiego jak tabele upuszczania, z wyjątkiem t1,b2?

  3. Błąd 1366 Nieprawidłowa wartość całkowita:„1” podczas importowania pliku

  4. Jaki jest odpowiednik DATALENGTH() w MySQL?

  5. Błąd PDO — wyjątek PDO” z komunikatem „SQLSTATE[HY000]:błąd ogólny”