【发布时间】:2015-10-13 16:48:39
【问题描述】:
我尝试执行以下命令:
UPDATE DB_TEST.STOCK_ITEMS
SET STATUS = (SELECT *
FROM (SELECT STOCK_ITEM_STATUS
FROM DB_TEST.STOCK_ITEMS_HISTORY
WHERE STOCK_ITEM_ID = DB_TEST.STOCK_ITEMS.ID
ORDER BY CHANGED_ON DESC, ID DESC)
WHERE ROWNUM <= 1)
WHERE EXISTS (SELECT *
FROM DB_TEST.STOCK_ITEMS_HISTORY
WHERE STOCK_ITEM_ID = DB_TEST.STOCK_ITEMS.ID);
但我得到了错误:
SQL-Error: ORA-00904: "DB_TEST"."STOCK_ITEMS"."ID": invalid identifier
我查看了 Oracle 错误,但我得到的只是我应该使用了错误或缺少的列名,但 DB_TEST.STOCK_ITEMS.ID 字段确实存在。
还有哪些其他原因会导致此错误?
【问题讨论】:
-
你不能用一组数据更新一个列
SET STATUS = (SELECT * ... )没有数据库会知道该字段上放什么数据。您可能正在寻找这个:dba.stackexchange.com/a/3034/42478 -
@JorgeCampos 。 . .阅读查询。子查询只返回一个值。