我在使用此 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)
我做错了什么?
您收到的选择错误将来自原始帖子中的此子查询:
SELECT V.PRICE + (V.PRICE * 0.1) FROM VENDOR V
WHERE V.ITEMNO=IT.ITEMNO
据我所知,
ITEMNO
是ITEMS
表中的主键,但它是VENDOR
表中的外键引用。该错误表明上面的语句与 VENDOR
表中的多个条目匹配,正如您从上一条评论中发现的那样。一旦问题得到解决并且子查询不再返回多于一行,您的原始查询应该可以正常工作。但是,我建议考虑一种不同的方法,因为如果子查询不返回任何行或多于一行,它将触发类似的失败。在不了解您想要实现的目标的更多信息的情况下,我不确定为此推荐什么。