使用in子句更新表错误

时间:2013-02-27 18:11:29

标签: sql oracle

UPDATE
  TABLE1 a,
  TABLE2 b
SET
  a.COL1 = 'VALUE'
WHERE
  a.FK = b.PK
  AND b.COL2 IN ('A subquery')

如果我使用此更新语句并且IN子句中的子查询未返回任何行,则会出现错误。我该如何避免? (Oracle 10g)

3 个答案:

答案 0 :(得分:0)

UPDATE
  TABLE1 a
SET
  a.COL1 = 'VALUE'
WHERE
  a.FK IN (SELECT b.PK FROM b WHERE b.COL2 in ....)

答案 1 :(得分:0)

您可能会将此内容重写为EXISTS查询,具体取决于子查询的确切详细信息:

UPDATE TABLE1 a, TABLE2 b SET a.COL1 = 'VALUE' 
WHERE a.FK = b.PK AND EXISTS (select 1 from OTHERTABLE O where B.COL2=O.COL2)

答案 2 :(得分:0)

您的子查询是否在引号中?

UPDATE
  TABLE1 a,
  TABLE2 b
SET
  a.COL1 = value
WHERE
  a.FK = b.PK
  AND b.COL2 IN (
                 SELECT col2
                 FROM ...
                 WHERE ...
                )