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

Cần trợ giúp với truy vấn MySQL này. Tìm người dùng có mặt tại một thời điểm nhất định

select *
from users u    
where u.Assignable = 1
    and u.UserID not in (
       select UserID
       from Appointments a
         join TimeSlots t on a.TimeSlotID = t.TimeSlotID 
       where t.EndTime > now()
          and t.EndTime > @desiredStartTime
          and t.StartTime < @desiredEndTime
    )

chỉnh sửa Nhận một gợi ý từ tandu

Tôi nghĩ điều này cũng sẽ hoạt động và nó có thêm lợi ích về hiệu suất mà không cần truy vấn phụ:

select *
from users u    
    left join Appointments a on a.UserID = u.UserID
    left join TimeSlots t on (
    a.TimeSlotID = t.TimeSlotID 
       and t.EndTime > now()
       and t.EndTime > @desiredStartTime
       and t.StartTime < @desiredEndTime
    )
where 
    u.Assignable = 1
    and t.TimeSlotID is null


  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ính xác thì việc sử dụng OR trong một câu lệnh MySQL khác với / không có dấu ngoặc đơn như thế nào?

  2. PHP Lỗi nghiêm trọng:Không tìm thấy lớp 'PDO'

  3. tạo mối quan hệ khóa chính và khóa ngoài

  4. PDO / MYSQL chuẩn bị câu lệnh không thoát ký tự?

  5. Thay đổi giá trị của lựa chọn thứ hai trên lựa chọn đầu tiên