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

SQL - venstre join med OR-operator (MySQL)

REDIGER

Ikke helt sikker på, hvad du har brug for

  • kan du vise nogle forventede resultater
  • kan du fortælle os, hvad du mener med "dræber det, hvad angår ydeevne" (går det til 20 sekunders eksekveringstid?)

Jeg tror ikke, det er mere effektivt, men prøv 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 skal administrere resultatet i SELECT med CASE WHEN ...

Du kan sammenligne ydeevnen og sætte indekser på passende kolonner (afhænger af, hvad du har i den fulde tabel og forespørgsel, men her skal det være id, id1 and col2 )



  1. Når du bruger NetBeans til at fejlsøge PHP-script for at ændre tabelposter, ændres 'affected_rows' fra 1 til -1

  2. PostgreSQL:Find sætninger tættest på en given sætning

  3. Hvordan opnår man et unikt auto-inkrementeret id for rækker på tværs af flere tabeller?

  4. Hvilken sortering skal bruges, så `ş` og `s` behandles som unikke værdier?