IF EXISTS(select 1 from TABLEA trn WITH(NOLOCK)
          INNER JOIN TABLEB mst
          ON trn.ID = mst.ID
          Where trn.ID = 1 and trn.SeqNo=@SeqNo )
OR NOT EXISTS(select 1 from TABLEA trn WITH(NOLOCK)
              INNER JOIN TABLEB mst
              ON trn.ID = mst.ID
              where trn.SeqNo=@SeqNo)
     BEGIN
     --Do something clever here
     END
     ELSE
     BEGIN
     --Throw custom error here
     END

如果值为空或满足第一个条件,我可以使用此查询执行某些操作,否则我必须向用户抛出一些自定义错误消息。
是否有其他方法可以做到这一点,或者我可以将此查询简化为更快速的查询。

最佳答案

这样地

SELECT CASE
         WHEN EXISTS(select 1 from TABLEA trn WITH(NOLOCK)
                            INNER JOIN TABLEB mst ON trn.ID = mst.ID
                            Where trn.ID = 1 and trn.SeqNo=@SeqNo)
              OR
              NOT EXISTS(select 1 from TABLEA trn WITH(NOLOCK)
                                  INNER JOIN TABLEB mst ON trn.ID = mst.ID
                                  where trn.SeqNo=@SeqNo)
        THEN 'EXISTS'
        ELSE 'NOT EXISTS'
    END

关于sql - 如何简化此SQL查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43247662/

10-12 02:51