sql >> Databasteknik >  >> RDS >> Mysql

SQL - vänsterkoppling med OR-operator (MySQL)

REDIGERA

Inte riktigt säker på vad du behöver

  • kan du visa något förväntat resultat
  • kan du berätta för oss vad du menar med "dödar den, när det gäller prestanda" (går det till 20 sekunders körningstid?)

Jag tror inte att det är mer effektivt men prova det.

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)

Du måste hantera resultatet i SELECT med CASE WHEN ...

Du kan jämföra prestanda och sätta index på lämpliga kolumner (beror på vad du har i hela tabellen och frågan men här ska det vara id, id1 and col2 )



  1. Hur anropar jag en lagrad procedur med argument med sqlcmd.exe?

  2. Oracle .Net ManagedDataAccess Fel:Det gick inte att ladda typen 'OracleInternal.Common.ConfigBaseClass' från assembly

  3. MySQL LOAD_FILE() laddar nullvärden

  4. Firebase:Hur läser man från extern DB?