sql >> Database teknologi >  >> RDS >> Mysql

MySQL får rækker, men foretrækker en kolonneværdi frem for en anden

Dette burde gøre det:

SELECT
     T1.id,
     T1.name,
     T1.value,
     T1.priority
FROM
     My_Table T1
LEFT OUTER JOIN My_Table T2 ON
     T2.name = T1.name AND
     T2.priority > COALESCE(T1.priority, -1)
WHERE
     T2.id IS NULL

Dette giver dig også mulighed for at have flere prioritetsniveauer, hvor det højeste er det, du ønsker at returnere (hvis du havde en 1 og 2, ville 2 blive returneret).

Jeg vil dog også sige, at det ser ud til, at der er nogle designproblemer i DB. Min tilgang ville have været:

My_Table (id, name)My_Values ​​(id, priority, value) med en FK på id til id. PK'er på id i My_Table og id, prioritet i My_Values. Selvfølgelig ville jeg også bruge passende tabelnavne.



  1. Sådan læser du den sidste række med SQL Server

  2. Postgresql UUID understøttet af Hibernate?

  3. join på to forskellige tabels kolonne sqlite3

  4. Lagring af HTML i MySQL:klat eller tekst?