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

Tingkatkan Query MySQL dengan IN Subquery

MySQL tidak dapat mengganti tabel yang memimpin dan yang digerakkan di IN ayat. Ini akan dikoreksi di 6.0 .

Untuk saat ini, Anda dapat menulis ulang seperti ini (memerlukan JOIN ):

SELECT  i.*
FROM    (
        SELECT  DISTINCT item_id
        FROM    item_attributes a
        WHERE   a.attribute_name = 'SomeAttribute'
                AND a.attribute_value = 'SomeValue'
        ) ai
JOIN    items i
ON      i.id = ai.item_id

Karena Anda menggunakan EAV model Anda mungkin ingin membuat indeks unik pada (attribute_name, item_id) dalam hal ini Anda dapat menggunakan gabungan biasa:

SELECT  i.*
FROM    item_attributes ai
JOIN    items i
ON      i.id = ai.item_id
WHERE   a.attribute_value = 'SomeValue'
        AND a.attribute_name = 'SomeAttribute'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mengembalikan angka dari tengah string dengan format tidak beraturan

  2. MySQL Mengatasi kesalahan 1093

  3. Format angka ke angka yang disingkat

  4. Menggunakan LAST_INSERT_ID() dalam sisipan multi baris

  5. Mengekspor data MYSQL ke Excel/CSV melalui php