Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL Có thể THAM GIA một bảng dựa trên danh sách dữ liệu tĩnh, được cung cấp không?

Nếu tôi hiểu chính xác truy vấn của bạn, bạn dự định chọn bản ghi có sort_metric thấp nhất và nếu có nhiều bản ghi có id thấp nhất. Tự tham gia kép của bạn là do không muốn sao chép danh sách xấu xí trong (). Một cách khác để thực hiện điều này là sử dụng CTE, chỉ cần một tự tham gia:

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. Sắp xếp thứ tự nối hai bảng không được liên kết

  2. MYSQL:Cách xác định hoặc lấy các biến chuỗi DÀI

  3. PDO nhiều truy vấn

  4. Sử dụng% cho máy chủ khi tạo người dùng MySQL

  5. Lựa chọn SQL từ hai bảng trả về các giá trị trùng lặp - Codeigniter