如何在where子句中使用all

How to use all in where clause

我想使用 all 编写此查询,但它无效 SQL:

SELECT *
      FROM OrderCustPlankLoad ocl
      WHERE ocl.PlankLoadStatusId = 2 and all 
      (Select PlankLoadStatusId from OrderAccountPlankLoad oal where oal.PlankLoadStatusId = 2
      and ocl.PlankClientId = oal.PlankClientId
      ) 

我要确保的是相关 table 中的所有相关记录的状态都是 2。

但我认为我写的不正确 - SSMS 不喜欢查询中的“全部”和“ocl.PlankClientId”。

我所做的是在开始处理之前确保所有记录都有效。如果 oal 中存在无效的相关行,我不想处理 ocl 中的行。

如何正确书写?

我想这就是你的意思:

  SELECT *
  FROM OrderCustPlankLoad ocl
  WHERE ocl.PlankLoadStatusId = 2
      AND ocl.PlankClientId IN 
            (SELECT oal.PlankClientId 
             FROM OrderAccountPlankLoad oal
             WHERE oal.PlankLoadStatusId = 2
             )

我想出了一个似乎有效的方法:

SELECT *
FROM OrderCustPlankLoad ocl
WHERE ocl.PlankLoadStatusId = 2
AND NOT EXISTS (
    SELECT 1
    FROM OrderAccountPlankLoad oal
    WHERE oal.PlankLoadStatusId = 5
    AND ocl.PlankClientId = oal.PlankClientId
) 
select *
      FROM OrderCustPlankLoad ocl
      WHERE ocl.PlankLoadStatusId = 2 and not exists
      (Select 1 from OrderAccountPlankLoad oal where oal.PlankLoadStatusId <>2
      and ocl.PlankClientId = oal.PlankClientId
      )