Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL - gabung kiri dengan operator OR (MySQL)

EDIT

Tidak begitu yakin apa yang Anda butuhkan

  • dapatkah Anda menunjukkan hasil yang diharapkan
  • bisakah Anda memberi tahu kami apa yang Anda maksud dengan "membunuhnya, dalam hal kinerja" (apakah itu berlangsung hingga 20 detik waktu eksekusi?)

Saya tidak percaya ini lebih efisien tetapi cobalah.

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)

Anda harus mengelola hasilnya di SELECT dengan CASE WHEN ...

Anda dapat membandingkan kinerja dan meletakkan indeks pada kolom yang sesuai (tergantung pada apa yang Anda miliki di tabel dan kueri lengkap tetapi di sini seharusnya 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. Kesalahan Sintaks MySQL Dalam Deklarasi Variabel

  2. Apa yang salah dengan pernyataan MySQL ini:DECLARE @ID INT

  3. Kesalahan:ER_WRONG_VALUE_COUNT_ON_ROW:Jumlah kolom tidak cocok dengan jumlah nilai pada baris 1

  4. Eclipse - tambahkan .jar ke Proyek Web Dinamis

  5. Database kolom Laravel Sum Fasih