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

Възможно ли е MySQL да се ПРИСЪЕДИНИ към таблица срещу предоставен статичен списък с данни?

Ако разбирам правилно вашата заявка, възнамерявате да изберете записа с най-нисък sort_metric и ако има повече от тях, този с най-нисък id. Вашето двойно самостоятелно присъединяване е причинено от това, че не искате да дублирате грозния in() списък. Друг начин да постигнете това е чрез CTE, като се нуждаете само от едно самоприсъединяване:

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. java нулев указател изключение SQL подготвен израз

  2. Какъв тип данни да използвате за полето за хеширана парола и каква дължина?

  3. Случаен номер в MySQL колона

  4. Как да заменя низ с друг низ и да запазя регистъра в php и mysql?

  5. ADDDATE() срещу DATE_ADD() в MySQL:Каква е разликата?