Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Union sebagai sub-kueri 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

Perhatikan bahwa MySQL dapat menggunakan Index Merge dan Anda dapat menulis ulang kueri Anda seperti ini:

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

, yang akan lebih efisien jika Anda memiliki indeks berikut:

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. Bagaimana cara mengubah parameter terikat tanda tanya gaya MySQL `?` menjadi parameter terikat `$1` gaya Postgres

  2. Penyisipan MySql ke dalam kueri pemilihan terlalu lambat untuk menyalin 100 juta baris

  3. mysql_fetch_array dan hanya kunci array string

  4. cara menambahkan jam dan menit di mysql curdate

  5. Bagaimana cara memeriksa apakah database mysql ada