Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL получава редове, но предпочита една стойност на колона пред друга

Това трябва да стане:

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

Това също ви позволява да имате множество нива на приоритет, като най-високото е това, което искате да върнете (ако сте имали 1 и 2, 2 ще бъде върнато).

Въпреки това ще кажа, че изглежда, че има някои проблеми с дизайна в DB. Моят подход би бил:

My_Table (id, name)My_Values ​​(id, priority, value) с FK на id към id. PKs на id в My_Table и id, приоритет в My_Values. Разбира се, бих използвал и подходящи имена на таблици.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql SQL:конкретен елемент да бъде първи и след това да сортирате останалите елементи

  2. Как да създадете защитен скрипт за влизане в PHP и MySQL

  3. Доверен ли е LAST_INSERT_ID() в транзакция?

  4. Как да използвате най-добре функцията за коментар в MySQL

  5. Java - Получаване на данни от MySQL база данни