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

MySQL otrzymuje wiersze, ale preferuje jedną wartość kolumny nad inną

To powinno wystarczyć:

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

Pozwala to również mieć wiele poziomów priorytetów, z których najwyższy to ten, który chcesz zwrócić (jeśli masz 1 i 2, 2 zostaną zwrócone).

Powiem również, że wydaje się, że w DB występują pewne problemy projektowe. Moje podejście byłoby następujące:

Moja_Tabela (id, nazwa)Moje_Wartości (identyfikator, priorytet, wartość) z FK od id do id. PKs na id w My_Table i id, priorytet w My_Values. Oczywiście użyłbym też odpowiednich nazw tabel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker nie może połączyć się z niedziałającym kontenerem

  2. Zamień ciąg znaków MySQL

  3. Ile znaków można przechowywać z 1 bajtem?

  4. Wylicz wiersze w mysql na podstawie grup

  5. Co dokładnie robi grupowanie według?