Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL - kết hợp trái với toán tử OR (MySQL)

CHỈNH SỬA

Không thực sự chắc chắn bạn cần gì

  • bạn có thể hiển thị một số kết quả mong đợi không
  • bạn có thể cho chúng tôi biết ý của bạn khi "giết nó, về mặt hiệu suất" (thời gian thực thi có kéo dài đến 20 giây không?)

Tôi không tin rằng nó hiệu quả hơn nhưng hãy thử nó.

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)

Bạn phải quản lý kết quả trong SELECT với CASE WHEN ...

Bạn có thể so sánh hiệu suất và đặt các chỉ mục trên các cột thích hợp (tùy thuộc vào những gì bạn có trong bảng và truy vấn đầy đủ nhưng ở đây nó phải là 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. Chọn các nhóm hàng, mỗi nhóm có một giá trị nhất định trong MySQL

  2. Tìm kiếm toàn văn bản trong MySQL với một phần từ

  3. MySQL Replication &Trigger

  4. Hình ảnh từ cơ sở dữ liệu MySQL không in

  5. CakePHP:Làm thế nào để lấy dữ liệu từ hai bảng bằng cách sử dụng một phép nối bên trong?