加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在SQL中不是条件

发布时间:2021-05-17 09:25:12 所属栏目:MsSql教程 来源:网络整理
导读:任何人都可以告诉我两列中SQL的NOT IN条件的确切语法. 这是我用VBA编写的查询. strNewSql = "SELECT distinct(tblRevRelLog_Detail.PartNumber),tblRevRelLog_Detail.ChangeLevel,tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog

任何人都可以告诉我两列中SQL的NOT IN条件的确切语法.

这是我用VBA编写的查询.

strNewSql = "SELECT distinct(tblRevRelLog_Detail.PartNumber),tblRevRelLog_Detail.ChangeLevel,tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber"

strNewSql = strNewSql & " WHERE (tblEventLog.PartNumber) Not In(SELECT tblEventLog.PartNumber FROM tblEventLog WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper') AND tblEventLog.TrackingNumber = """ & tempTrackingNumber & """ AND tblEventLog.TrackingNumber =  tblRevRelLog_Detail.RevRelTrackingNumber;"

我想改变这个子查询,它应该适用于两列的组合,如下所示:

strNewSql = "SELECT tblRevRelLog_Detail.PartNumber,tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber"

strNewSql = strNewSql & " WHERE (((tblEventLog.PartNumber,tblEventLog.PartNumberChgLvl) Not In(SELECT tblEventLog.PartNumber,tblEventLog.PartNumberChgLvl FROM tblEventLog WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper') AND tblEventLog.TrackingNumber = """ & tempTrackingNumber & """ AND tblEventLog.TrackingNumber =  tblRevRelLog_Detail.RevRelTrackingNumber);"

但这不起作用…..

解决方法

您不能将IN用于多个列,但通常可以使用EXISTS实现相同的效果:
SELECT *
FROM tbl1
WHERE NOT EXISTS
(
    SELECT *
    FROM tbl2
    WHERE tbl2.col1 = tbl1.col1
        AND tbl2.col2 = tbl1.col2
)

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读