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

MySQL Czy można DOŁĄCZYĆ tabelę do podanej, statycznej listy danych?

Jeśli dobrze rozumiem Twoje zapytanie, zamierzasz wybrać rekord o najniższym sort_metric, a jeśli jest ich więcej, ten o najniższym identyfikatorze. Twoje podwójne łączenie jest spowodowane tym, że nie chcesz powielać brzydkiej listy in(). Innym sposobem na osiągnięcie tego jest CTE, wymagające tylko jednego łączenia:

WITH ext AS (
  SELECT id,f_key,name,sort_metric
  FROM tmp.names
  WHERE  f_key IN ( 1, 3, 254, 257, 301, 273, 279 )
  )
SELECT t1.*
  FROM ext t1
  WHERE NOT EXISTS (
    SELECT *
    FROM ext t2
    WHERE t2.sort_metric <= t1.sort_metric
    AND t2.f_key = t1.f_key
    AND t2.id < t1.id
    )
  ORDER BY t1.id
  LIMIT 1
  ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odmowa dostępu do MySQL Błąd 1045

  2. Pobierz dane z tabeli z funkcją Group_concat

  3. Nie można przekonwertować MySQL.DateTime na System.DateTime z wartościami 0000-00-00 00:00:00

  4. Paginacja PHP i MySQL

  5. MySQL w 2018 roku:co jest w wersji 8.0 i inne obserwacje