首页 > 解决方案 > 在 mysql 和 mssql 问题中运行的元组“not in”子句

问题描述

我正在尝试使用在 MySQL 和 SQL Server 上运行的查询从包含一些 where 子句的表中获取数据。该查询包含来自连接数据的元组子句验证,不存在于不同表的子查询中。此查询在 MySQL 中运行正常,但在 SQL Server 中运行不正常。尝试“不存在”但没有成功...

SELECT
    a.col1,
    b.col2
FROM
    tableA a
    JOIN tableB b ON b.col_x = a.col_x
    WHERE a.col5 IN ('VAL1', 'VAL2', 'VAL3')
    AND (a.col2, b.col4) NOT IN (
        SELECT
            c.col2,
            c.col4
        from
            tableC c
    )

在 SQL Server 中运行我得到

在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”。

在 SQL and 子句的“NOT IN / NOT EXISTS”部分。有任何想法吗?

标签: mysqlsqlsql-server

解决方案


NOT EXISTS可以改用:

SELECT
    a.col1,
    b.col2
FROM
    tableA a
    JOIN tableB b ON b.col_x = a.col_x
WHERE a.col5 IN ('VAL1', 'VAL2', 'VAL3')
  AND NOT EXISTS    
  (
    SELECT *
    from tableC c
    WHERE c.col2 = a.col2 AND c.col4 = b.col4
  )

推荐阅读