sql - 选择 2 列中没有特定值的记录

标签 sql sql-server

我需要选择一些在 2 列中没有特定值的行。目前我正在通过执行以下操作为单个列执行此操作:

SELECT *
FROM MyTable
WHERE    (ManufacturerID = @ManufacturerID)
    AND ItemID NOT IN(
        SELECT ItemID FROM UpdateMyTable WHERE ManufacturerID=@ManufacturerID
    )

但现在我需要过滤掉不同时包含 2 个列值的行:ItemID 和 ChildItemID

我将如何完成这个?

最佳答案

SELECT
  *
FROM
  MyTable                                 AS data
LEFT JOIN
  (SELECT x, y, z FROM UpdateMyTable)     AS check
    ON  data.x = check.x
    AND data.y = check.y
    AND data.z = check.z
WHERE
  x = @x
  AND check.x IS NULL


SELECT
  *
FROM
  MyTable                                 AS data
WHERE
  x = @x
  AND NOT EXISTS (
                  SELECT
                    *
                  FROM
                    UpdateMyTable        AS check
                  WHERE
                      data.x = check.x
                  AND data.y = check.y
                  AND data.z = check.z
                 )

关于sql - 选择 2 列中没有特定值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139699/

相关文章:

mysql - 通过以下方式获取每组的前/后 n 条记录

mysql - 如何在Postgresql中选择一列显示为具有差异值的2列结果

javascript - 如何将fullCalendar中的资源保存到数据库中?

sql - 如何清除 SQL Server 2005/2008 中的查询执行统计信息

mysql - 我的 sql 查询不适用于数学运算符

mysql - 尝试优化会降低性能的查询

营业时间 SQL

sql - 创建/操作索引时的默认 SET 语句?

c# - 在 asp.net 上的 sql server 中插入空值,并提供必填字段验证器

SQL 服务器 : how to avoid between operator with datetime column?