sql >> Database >  >> RDS >> Mysql

MySQL krijgt rijen maar geeft de voorkeur aan de ene kolomwaarde boven de andere

Dit zou het moeten doen:

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

Dit stelt je ook in staat om meerdere prioriteitsniveaus te hebben, waarbij de hoogste degene is die je wilt retourneren (als je een 1 en 2 had, zou de 2 worden geretourneerd).

Ik zal echter ook zeggen dat het lijkt alsof er enkele ontwerpproblemen zijn in de DB. Mijn aanpak zou zijn geweest:

My_Table (id, naam)My_Values ​​(id, prioriteit, waarde) met een FK op id naar id. PK's op id in My_Table en id, prioriteit in My_Values. Ik zou natuurlijk ook de juiste tabelnamen gebruiken.



  1. Zijn er nadelen aan het gebruik van een generieke varchar(255) voor alle op tekst gebaseerde velden?

  2. Hoe geef ik een Java-lijst met objecten door aan de Oracle Stored Procedure met MyBatis?

  3. SQL Server Transactionele Replicatie Internals – Deel 2

  4. mysql update increment int veld dat null is