首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server子查询返回了多个值。当子查询跟在=,!=,<,<=,>,>=之后时,这是不允许的

SQL Server子查询返回了多个值。当子查询跟在=,!=,<,<=,>,>=之后时,这是不允许的
EN

Stack Overflow用户
提问于 2010-04-16 21:20:53
回答 11查看 586.7K关注 0票数 90

我运行以下查询:

SELECT 
   orderdetails.sku,
   orderdetails.mf_item_number,
   orderdetails.qty,
   orderdetails.price,
   supplier.supplierid,
   supplier.suppliername,
   supplier.dropshipfees,
   cost = (SELECT supplier_item.price
           FROM   supplier_item,
                  orderdetails,
                  supplier
           WHERE  supplier_item.sku = orderdetails.sku
                  AND supplier_item.supplierid = supplier.supplierid)
FROM   orderdetails,
       supplier,
       group_master
WHERE  invoiceid = '339740'
       AND orderdetails.mfr_id = supplier.supplierid
       AND group_master.sku = orderdetails.sku  

我得到以下错误:

消息512,第16级,状态% 1,第2行子查询返回了多个值。当子查询跟在=、!=、<、<=、>、>=之后或子查询用作表达式时,不允许这样做。

有什么想法吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-04-16 22:18:23

试试这个:

SELECT
    od.Sku,
    od.mf_item_number,
    od.Qty,
    od.Price,
    s.SupplierId,
    s.SupplierName,
    s.DropShipFees,
    si.Price as cost
FROM
    OrderDetails od
    INNER JOIN Supplier s on s.SupplierId = od.Mfr_ID
    INNER JOIN Group_Master gm on gm.Sku = od.Sku
    INNER JOIN Supplier_Item si on si.SKU = od.Sku and si.SupplierId = s.SupplierID
WHERE
    od.invoiceid = '339740'

这将返回除了cost列之外的多个相同的行。查看返回的不同成本值,并找出导致不同值的原因。然后询问某人他们想要的成本值,并将条件添加到将选择该成本的查询中。

票数 52
EN

Stack Overflow用户

发布于 2010-10-12 21:27:45

检查您试图对其执行查询的表上是否有任何触发器。当他们试图运行表上的update/select/insert触发器时,有时会抛出此错误。

您可以修改您的查询以禁用触发器,如果触发器没有,则需要为您试图运行的任何查询执行触发器。

ALTER TABLE your_table DISABLE TRIGGER [the_trigger_name]

UPDATE    your_table
SET     Gender = 'Female'
WHERE     (Gender = 'Male')

ALTER TABLE your_table ENABLE TRIGGER [the_trigger_name]
票数 48
EN

Stack Overflow用户

发布于 2013-09-11 13:57:32

SELECT COLUMN 
    FROM TABLE 
WHERE columns_name
    IN ( SELECT COLUMN FROM TABLE WHERE columns_name = 'value');

注意:当我们使用子查询时,我们必须关注以下几点:

  1. 如果我们的子查询返回1个值,在这种情况下,我们需要使用(=,!=,<>,<,>...)
  2. else(多个值),在这种情况下,我们需要使用( in,any,<>,

)

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2653188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档