sql >> Database >  >> RDS >> Mysql

MySQL Mogelijk om lid te worden van een tabel tegen een verstrekte, statische lijst met gegevens?

Als ik uw vraag goed begrijp, bent u van plan het record met de laagste sort_metric te selecteren, en als er meer zijn, degene met de laagste id. Je dubbele self-join wordt veroorzaakt doordat je de lelijke in()-lijst niet wilt dupliceren. Een andere manier om dit te bereiken is door middel van een CTE, waarvoor je maar één self-join nodig hebt:

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. Serialiseren versus imploderen

  2. Ruwe relevantiequery in Laravel. Hoe ermee om te gaan?

  3. Volledige deelname aan SQL

  4. Hoe de INSERT-prestaties op een zeer grote MySQL-tabel te verbeteren?