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

Cách truy xuất kết quả không khớp trong mysql

Bạn có thể sử dụng left outer join để thực hiện điều này:

select
    t1.tid
from
    table1 t1
    left outer join table2 t2 on
        t1.tid = t2.tid
where
    t2.tid is null

Điều này làm là nó chiếm bảng đầu tiên của bạn (table1 ), kết hợp nó với bảng thứ hai của bạn (table2 ), và điền vào null cho table2 cột trong bất kỳ hàng nào trong table1 không khớp với một hàng trong table2 . Sau đó, nó lọc ra bằng cách chỉ chọn table1 không tìm thấy hàng nào phù hợp.

Ngoài ra, bạn cũng có thể sử dụng not exists :

select
    t1.tid
from
    table1 t1
where
    not exists (select 1 from table2 t2 where t2.tid = t1.tid)

Điều này thực hiện left semi join và về cơ bản sẽ làm điều tương tự mà left outer join làm. Tùy thuộc vào chỉ mục của bạn, một cái có thể nhanh hơn cái kia, nhưng cả hai đều là những lựa chọn khả thi. MySQL có một số tài liệu tốt về tối ưu hóa liên kết , vì vậy bạn nên kiểm tra điều đó ..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL str_to_date tạo ra NULL mặc dù định dạng hợp lệ

  2. Sự khác biệt giữa =null và IS NULL là gì?

  3. Câu lệnh tương đương của DBCC INPUTBUFFER (@@ SPID) (cung cấp câu lệnh sql cho kết nối hiện tại otr kết nối được chỉ định) trong MYSQL là gì?

  4. 'LIKE ('% this% 'OR'% that% ') và cái gì đó =else' không hoạt động

  5. cách thích hợp để chuyển đổi giữa datetime của mysql và dấu thời gian của python là gì?