sql >> Databáze >  >> RDS >> Mysql

SQL – levé spojení s operátorem OR (MySQL)

UPRAVIT

Nejste si jisti, co potřebujete

  • můžete ukázat nějaký očekávaný výsledek
  • Můžete nám říct, co máte na mysli pod pojmem "zničí to, pokud jde o výkon" (dojde k 20 sekundám doby provedení?)

Nevěřím, že je to efektivnější, ale zkuste to.

select 
    *
from
    tableA as a
    left join tableB as b1
        on a.id=b1.id1 
        and b1.col2='Red'
    left join tableB as b2
        on a.id=b2.id2 
        and b2.col2='Blue'
where 
    (b1.id1 is not null or b2.id2 is not null)
    or (b1.id1 is null and b2.id2 is null)

Výsledek musíte spravovat v SELECT s CASE WHEN ...

Můžete porovnat výkon a umístit indexy do příslušných sloupců (závisí na tom, co máte v celé tabulce a dotazu, ale zde by to mělo být id, id1 and col2 )



  1. Autoincrement Primární klíč v databázi Oracle

  2. Jak seřadit data ve sqlalchemy podle seznamu

  3. WHERE LIKE s více klíčovými slovy

  4. Jak používat JAKÝKOLI / NĚKTERÝ logický operátor v SQL Server - SQL Server / TSQL výukový program, část 127