在单选中更新多行

问题描述 投票:0回答:1

我在使用此 SQL 时遇到单选错误中的多行:

UPDATE ITEMS IT  
SET IT.BCOST = (SELECT V.PRICE + (V.PRICE * 0.1) 
                FROM VENDOR V
                WHERE V.ITEMNO = IT.ITEMNO)
WHERE EXISTS (SELECT 1 FROM VENDOR V WHERE V.ITEMNO = IT.ITEMNO)

我做错了什么?

sql firebird firebird-3.0
1个回答
1
投票

您收到的选择错误将来自原始帖子中的此子查询:

SELECT V.PRICE + (V.PRICE * 0.1) FROM VENDOR V
WHERE V.ITEMNO=IT.ITEMNO

据我所知,

ITEMNO
ITEMS
表中的主键,但它是
VENDOR
表中的外键引用。该错误表明上面的语句与
VENDOR
表中的多个条目匹配,正如您从上一条评论中发现的那样。一旦问题得到解决并且子查询不再返回多于一行,您的原始查询应该可以正常工作。但是,我建议考虑一种不同的方法,因为如果子查询不返回任何行或多于一行,它将触发类似的失败。在不了解您想要实现的目标的更多信息的情况下,我不确定为此推荐什么。

© www.soinside.com 2019 - 2024. All rights reserved.