【发布时间】:2015-04-01 09:21:12
【问题描述】:
大家好,
我在尝试运行以下查询时收到此错误。
Update PS_LM_ENRLMT A
Set A.LM_ACT_ID = (Select B.LM_ACT_ID FROM PS_LM_ACT B
where B.LM_ACT_ID = A.LM_ACT_ID
And B.LM_ROW_ADDED_DTTM < '09-DEC-13 05.35.35.000000 PM'
AND A.LM_ACT_ID = 1166
And A.LM_CI_ID!= 1196)
为避免 Null 错误,我将查询更新如下:
Update PS_LM_ENRLMT A
Set A.LM_ACT_ID = (Select B.LM_ACT_ID FROM PS_LM_ACT B
where B.LM_ACT_ID = A.LM_ACT_ID
And B.LM_ROW_ADDED_DTTM < '09-DEC-13 05.35.35.000000 PM'
AND A.LM_ACT_ID = 1166
And A.LM_CI_ID!= 1196)
where exists
(Select B.LM_ACT_ID FROM PS_LM_ACT B
where B.LM_ACT_ID = A.LM_ACT_ID
And B.LM_ROW_ADDED_DTTM < '09-DEC-13 05.35.35.000000 PM'
AND A.LM_ACT_ID = 1166
And A.LM_CI_ID!= 1196)
查询成功运行,但没有更新任何数据。我无法找到原因。谁能帮忙。
谢谢, 阿杰
【问题讨论】:
-
您的子查询没有返回行。我会从那里开始
-
PS_LM_ENRLMT是如何创建的?我猜A.LM_ACT_ID列不能为空...注意:您的第一条语句将更改表中的所有值;第二个要么全部要么没有