首页 > 解决方案 > SQL Server:多列子查询

问题描述

假设我要查询任何商品的订单号、商品号和数量,其中商品号和数量与 ordid 365 中商品的商品号和数量都匹配,并且 productCategory 为“Electronics”。

我尝试按如下方式进行:

SELECT 
    ordid, prodid, qty
FROM 
    item
WHERE 
    ((prodid, qty) IN (SELECT prodid, qty
                       FROM item
                       WHERE ordid = 365)
     AND productCategory = "Electronics")

但我收到以下错误:

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

关键字“and”附近的语法不正确。

我是否使用正确的 T-SQL 语法来执行这种操作?

提前致谢!

标签: sqlsql-serversubquery

解决方案


使用exists. SQL Server 不支持元组:

WHERE EXISTS (SELECT 1
              FROM item i2
              WHERE i2.prodid = item.prodid AND i2.qty = item.qty AND
                    i2.ordid = 365
             )

推荐阅读