Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL - sprzężenie lewe z operatorem OR (MySQL)

EDYTUJ

Nie jestem pewien, czego potrzebujesz

  • czy możesz pokazać jakiś oczekiwany wynik
  • Czy możesz nam powiedzieć, co masz na myśli przez „zabija to, pod względem wydajności” (czy trwa to 20 sekund czasu wykonania?)

Nie wierzę, że jest bardziej wydajny, ale spróbuj.

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)

Musisz zarządzać wynikiem w SELECT z CASE WHEN ...

Możesz porównać wydajność i umieścić indeksy na odpowiednich kolumnach (w zależności od tego, co masz w pełnej tabeli i zapytaniu, ale tutaj powinno być id, id1 and col2 )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak posortować wyniki zapytań według odległości w pakiecie Laravel QueryBuilder / MySQL Spatial?

  2. Połącz się ze zdalną bazą danych MySQL za pomocą VB.NET 2010

  3. Zaktualizuj dwa różne wiersze w jednym wierszu SQL

  4. Problem z zasięgiem MySql ze skorelowanymi podzapytaniami

  5. Nie można zainstalować MySQL UDF