当前位置: 首页 > 面试题库 >

SQL子查询返回了多个值

阎卓
2023-03-14
问题内容

我的查询导致以下错误:

消息512,级别16,状态1,过程Item_insupd,第17行
子查询返回了多个值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。

询问:

INSERT INTO [Total_Database].[dbo].[Item]
    (
        ItemID, 
        ItemNo,
        ItemDescription,
        Notes,
        StandardCost,
        SalesGLAccountID,
        ItemTypeID,
        Backorderable
    ) 
 (
    SELECT  [nr],
            [nr],
            [Latijn]+' '+[Subgroep]+' '+CAST([nr] as VARCHAR(255)),
            [NL]+' '+[Vorm]+' '+[Kenmerk]+' '+[Hoogte],[Inkoopprijs],
            (4),
            (case when [Productgroep]='PB' then 1 else 5 end),
            (1) 
    FROM    [ACCESDATA].[dbo].[Planten]
 );

我怀疑这种情况的发生是因为我的子查询不包含WHERE,但是不幸的是,我不知道如何构造正确的WHERE子句。


问题答案:

我怀疑问题出在此字符串中(您的代码中的第26行):

IF NOT (EXISTS (SELECT G.GLAccountID FROM GLAccnt G INNER JOIN Inserted I ON G.GLAccountID = I.SalesGLAccountID))
OR ((SELECT I.COGSGLAccountID FROM Inserted I) IS NOT NULL) AND NOT (EXISTS (SELECT G.GLAccountID FROM GLAccnt G INNER JOIN Inserted I ON G.GLAccountID = I.COGSGLAccountID))

看起来像(SELECT I.COGSGLAccountID FROM Inserted I)返回多个行,所以您遇到了错误。

您将其inserted视为一个单行表(例如,从中获取参数,例如SELECT @ItemNo = I.ItemNo, @ItemDescription = I.ItemDescription FROM Inserted I,但inserted表可以包含多行。因此,在您的情况下,我认为您有3个选项-
检查是否仅插入了1行,将触发器重写为基于集合的触发器或使用游标。

这是带有一些类似示例的sql小提琴。



 类似资料:
  • 问题内容: 桌子: 我的查询: 我收到“ MySQL子查询返回多个行”错误。 我知道此查询可以使用以下查询的解决方法: 然后使用php循环遍历结果并执行以下查询以获取和回显它: 但是我认为可能会有更好的解决方案? 问题答案: 简单的解决方法是在子查询中添加一个子句: 一个更好的选择(就性能而言)是使用联接:

  • 问题内容: 以下查询应返回从动漫中扮演角色的人物的姓名。但我收到以下错误: Blockquote ORA-01427:单行子查询返回多个行 提前致谢! 问题答案: 代替 使用 查询中有5个条件需要更改。 UPD 另外,您的查询等同于

  • 问题内容: 我运行以下查询: 我收到以下错误: 消息512,级别16,状态1,行2子查询返回的值大于1。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,这是不允许的。 有任何想法吗? 问题答案: 试试这个: 这将返回除列之外相同的多行。查看返回的不同成本值,并找出导致这些不同值的原因。然后询问某人他们想要哪个成本值,然后将条件添加到查询中以选择该成本。

  • 问题内容: 我正在尝试更新列中的所有记录,以便它们以“ CD”开头,例如DCE206将变为CDE206。 我正在使用上面的更新语句,但是出现以下错误 ‘子查询返回了1个以上的值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,这是不允许的。 我可以在语句中进行任何更改以实现此目的,还是需要使用游标进行调查。 我正在使用SQL Server 2000。 问题答案: 您不可能从该代码

  • 问题内容: 我想知道以下内容: 如何从数据库中的多个表中获取数据? 有哪些类型的方法可以做到这一点? 什么是联接和工会,它们之间有何不同? 什么时候应该使用每个与其他比较? 我打算在我的应用程序(例如,PHP)中使用此功能,但是不想对数据库运行多个查询,我需要在单个查询中从多个表中获取数据的哪些选项? 注意:我正在写这篇文章是因为我希望能够链接到有关我在PHP队列中不断遇到的众多问题的书面指南,因

  • 问题内容: 我正在执行此查询: 我正在尝试使其返回如下内容: 但是,我得到了错误: #1242-子查询返回的行数超过1。 我尝试将语句放置在子查询中,但是收到无效的语法错误。 问题答案: 您可以使用简单的分组方式在没有子查询的情况下进行尝试: 使用GROUP BY时,未分组的任何列都必须具有聚合子句(fe SUM或COUNT。)因此,在这种情况下,您必须对县名称,precienct.id和prec