sql >> Databasteknik >  >> RDS >> Mysql

MySQL får rader men föredrar ett kolumnvärde framför ett annat

Detta borde göra 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

Detta gör att du också kan ha flera prioritetsnivåer där den högsta är den du vill returnera (om du hade en 1 och 2 skulle 2:an returneras).

Jag kommer också att säga att det verkar som att det finns några designproblem i DB. Mitt tillvägagångssätt skulle ha varit:

My_Table (id, name)My_Values ​​(id, priority, value) med en FK på id till id. PK:er på id i My_Table och id, prioritet i My_Values. Självklart skulle jag också använda lämpliga tabellnamn.



  1. Hur man söker och ersätter alla instanser av en sträng i en databas?

  2. Hur får jag en lista över alla tabeller i en databas med TSQL?

  3. Skillnad i hanteringen av utrymmena mellan Oracle och SQL Server

  4. Hur man återställer MySQL-databas från .myd-, .myi-, .frm-filer