sql >> Database teknologi >  >> RDS >> Mysql

Forbedre MySQL-forespørgsel med IN Subquery

MySQL kan ikke skifte den ledende og den drevne tabel i IN klausul. Dette vil blive rettet i 6.0 .

Indtil videre kan du omskrive det sådan her (kræver en 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

Da du bruger EAV model vil du måske lave et unikt indeks på (attribute_name, item_id) i så fald kan du bruge en almindelig join:

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. Apache - MySQL Service fundet med forkert sti. / Porte, der allerede er i brug

  2. Sådan kopierer du SQLite-database fra Android til en MySQL-database (replikér/synkroniser)

  3. Fejlmeddelelse:Undtagelse i trådens hoved org.hibernate.HibernateException:Fejl ved adgang til stax-stream

  4. Er brug af en mastertabel til delte kolonner god praksis for en hel database?