Mysql 省略某些值的SQL查询

Mysql 省略某些值的SQL查询,mysql,Mysql,我正在尝试返回在ts_分配表中不存在的所有房间,即尚未分配或在ts_分配表中处于挂起、失败或拒绝状态的房间。这些房间可以满足其中一项条款 但省略了一些值,如D.0.02。请参考FIDLE?为什么会这样?它存在于上述状态的ts_分配中,但似乎不符合某一条款。我如何解决这个问题 这是我的小提琴: x、 id为null将为您提供所有尚未分配的房间,或部分将为您提供更多结果-那些状态为挂起、拒绝或失败的房间。请将您的问题简化为相关部分,并不仅仅在FIDLE中发布这些详细信息。重复:,不要多次发布同一查询

我正在尝试返回在ts_分配表中不存在的所有房间,即尚未分配或在ts_分配表中处于挂起、失败或拒绝状态的房间。这些房间可以满足其中一项条款

但省略了一些值,如D.0.02。请参考FIDLE?为什么会这样?它存在于上述状态的ts_分配中,但似乎不符合某一条款。我如何解决这个问题

这是我的小提琴:


x、 id为null将为您提供所有尚未分配的房间,或部分将为您提供更多结果-那些状态为挂起、拒绝或失败的房间。

请将您的问题简化为相关部分,并不仅仅在FIDLE中发布这些详细信息。重复:,不要多次发布同一查询
SELECT 
  *
FROM 
  ts_room rm
WHERE 
  NOT EXISTS (
    SELECT 1
    FROM ts_roompref rp
      JOIN ts_request rq
      ON rp.request_id = rq.id
      AND day_id = 1
      AND period_id = 1
    WHERE 
      rm.id = rp.room_id)
AND NOT EXISTS (
    SELECT 1
    FROM ts_roompref rp
      JOIN ts_allocation a
      ON rp.request_id = a.request_id
            AND a.status <> 'Pending'
            AND a.status <> 'Failed'
            AND a.status <> 'Declined'
    WHERE 
      rm.id = rp.room_id)
SELECT  rm.* 
FROM    ts_room rm
        LEFT JOIN (
            SELECT  a.*, rp.room_id 
            FROM    ts_roompref rp 
                    INNER JOIN  dbo.ts_allocation a on a.request_id = rp.request_id) x 
                    ON  x.room_id = rm.id
WHERE   x.id is null    
        or (x.id is not null and x.status in ('Pending', 'Failed','Declined'))