sql >> Databáze >  >> RDS >> Mysql

MySQL získává řádky, ale dává přednost jedné hodnotě sloupce před jinou

Mělo by to stačit:

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

To vám také umožňuje mít více úrovní priority, přičemž nejvyšší je ta, kterou chcete vrátit (pokud byste měli 1 a 2, vrátí se 2).

Také však řeknu, že se zdá, že v DB jsou nějaké konstrukční problémy. Můj přístup by byl:

My_Table (id, name)My_Values ​​(id, priority, value) with FK on id to id. PK na id v My_Table a id, priorita v My_Values. Samozřejmě bych také použil vhodné názvy tabulek.



  1. Optimalizace vyhledávání MySQL pomocí podobných a zástupných znaků

  2. Rozdělení nových ovladačů ODBC a OLEDB pro Microsoft SQL Server

  3. Hromadný import SQL z CSV

  4. Jak naznačit index pro použití ve výběrovém dotazu MySQL?