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

Chọn lại những thứ không tồn tại

giả sử các thẻ của bạn ('c', 'cg', 'rx') nằm trong một bảng được gọi là tags_match với cấu trúc tương tự như trên

thì bạn có thể làm điều này:

select tr.name 
from tags as tl 
    right join tags_match as tr 
    on tl.name = tr.name
where tl.name is null

Điều này sẽ tìm thấy tất cả các mục trong tags_match không có trong thẻ, vì vậy điều này sẽ cung cấp cho bạn kết quả mong muốn, nhưng tiếc là các thẻ của bạn ('c', 'cg', 'rx') không có trong bảng :(

Không có vấn đề gì, chúng tôi có thể sử dụng một truy vấn con để 'giả mạo' bảng

select tr.name 
from tags as tl 
    right join (select 'cg' as name 
                union select 'c' as name 
                union select 'rx' as name) as tr 
    on tl.name = tr.name
where tl.name is null

Mặc dù nó có một chút xấu xí, nhưng điều này sẽ hiệu quả. Nếu bạn có nhiều mục muốn kiểm tra, bạn có thể cân nhắc việc tạo một bảng tạm thời thực sự.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giao dịch độc quyền của Laravel 4 với cập nhật và lựa chọn

  2. Vị trí mySQL my.ini

  3. Làm cách nào để thực hiện chèn hàng loạt trong mySQL bằng node.js

  4. Tìm mức lương cao thứ 2 theo cách tốt nhất có thể

  5. Laravel hasMany quan hệ đếm số lượt thích và bình luận trên bài đăng