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

Liên hợp như truy vấn phụ MySQL

SELECT  Parts.id
FROM    (
        SELECT  parts_id
        FROM    Parts_Category
        WHERE   Parts_Category.category_id = '508'
        UNION
        SELECT  parts_id
        FROM    Parts_Category
        WHERE   Parts_Category.main_category_id = '508'
        ) pc
JOIN    Parts
ON      parts.id = pc.parts_id
        AND Parts.status = 'A'
LEFT JOIN
        Image
ON      image.id = parts.image_id

Lưu ý rằng MySQL có thể sử dụng Index Merge và bạn có thể viết lại truy vấn của mình như sau:

SELECT  Parts.id
FROM    (
        SELECT  DISTINCT parts_id
        FROM    Parts_Category
        WHERE   Parts_Category.category_id = '508'
                OR Parts_Category.main_category_id = '508'
        ) pc
JOIN    Parts
ON      parts.id = pc.parts_id
        AND Parts.status = 'A'
LEFT JOIN
        Image
ON      image.id = parts.image_id

, sẽ hiệu quả hơn nếu bạn có các chỉ mục sau:

Parts_Category (category_id, parts_id)
Parts_Category (main_category_id, parts_id)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dữ liệu MySQL - Cách tốt nhất để triển khai phân trang?

  2. Sự cố với JPA, EclipseLink và mysql phân biệt chữ hoa chữ thường

  3. Số cột tối đa trong bảng MySQL

  4. Kết nối cơ sở dữ liệu mysql trực tuyến với máy chủ xampp cục bộ bằng php

  5. Cách nhận nhiều số lượng với một truy vấn trong MySQL