sql >> データベース >  >> RDS >> Mysql

このMySQLクエリのヘルプが必要です。特定の時間に利用可能なユーザーを見つける

    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
        )
    

    編集 タンドゥから手がかりを取る

    これも機能すると思います。サブクエリがないというパフォーマンス上の利点もあります。

    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. MySqlクエリキャッシュ設定

    2. JavaによってOracleにログインしているユーザーをロックする

    3. PostgreSQL 13libpqsslpassword接続パラメータの概要

    4. Transact-SQLの再帰CTEでUNIONではなくUNIONALLが必要なのはなぜですか。