【发布时间】:2018-03-20 13:06:42
【问题描述】:
这是我迄今为止尝试过的(Oracle SQL):
UPDATE table1
SET table1.ADDRESS =
(SELECT table2.ADDRESS
FROM table2 INNER JOIN table1 ON table1.ID = table2.ID
WHERE table1.ADDRESS <> table2.ADDRESS
AND table1.DATE BETWEEN TO_DATE ('9999-12-31')
AND TO_DATE ('9999-01-21'));
(我选择的日期是随机的)
得到 ORA-1427 错误 - 单行子查询返回多个 行..
【问题讨论】:
-
请给我们所有表格的样本数据和预期结果。
-
INNER JOIN table1 ON table1.column1 = table2.column1 WHERE table1.column1 <> table2.column1- 你确定吗? -
查询实际上是没有意义的。您正在连接 COLUMN1 上的表,然后 - 在 WHERE 条件下 - 说它们是不同的。我怀疑应该修改 JOIN 条件。无论如何,更多信息可能会有所帮助。此外,日期 - 尽管是随机选择的 - 是无效的。首先,使用 DATE 文字(或 TO_DATE 函数,带有适当的格式掩码)。此外,31.12.9999 和 21.01.9999 之间没有任何内容(即向后)。
-
您的子查询将永远不会在同一列中返回带有 的行 INNER JOIN 和 WHERE 子句。您是否将查询更改为发布?两个表的主键是什么?您可能需要更改 ON 以匹配主键
-
请不要破坏您的问题。如果您想删除它,请使用删除按钮。