【问题标题】:ORACLE/SQL - UPDATE Statement Issue (Need to OR some sets)ORACLE/SQL - UPDATE 语句问题(需要 OR 一些集合)
【发布时间】:2014-08-21 12:44:45
【问题描述】:

我在标题中提出的问题可能吗?我需要在更新中“或”一些集合。

UPDATE prtmst
SET prtfam = '1'
WHERE prtnum IN ('111', '222', '333', '444')
AND prtfam = '1M'

运行良好,但我需要它是这样的:

UPDATE prtmst
SET prtfam = '1'
WHERE prtnum IN ('111', '222', '333', '444')
AND prtfam = '1M'
 OR SET prtfam = '2'
WHERE prtnum IN ('111', '222', '333', '444')
AND prtfam = '2M'
 OR SET prtfam = '3'
WHERE prtnum IN ('111', '222', '333', '444')
AND prtfam = '3M'
 OR SET prtfam = '1M'
WHERE prtnum IN ('111', '222', '333', '444')
AND prtfam = '1'
 OR SET prtfam = '2M'
WHERE prtnum IN ('111', '222', '333', '444')
AND prtfam = '2'
 OR SET prtfam = '3M'
WHERE prtnum IN ('111', '222', '333', '444')
AND prtfam = '3'

【问题讨论】:

标签: sql oracle


【解决方案1】:

请在相信这个答案之前运行一些测试。它应该工作,但由于我不知道你的架构,可能会发生不好的事情。

UPDATE prtmst
SET prtfam =
CASE
    WHEN prtnum IN ('XBR140006T', 'XCA02334', 'XCA02344')   
        AND prtfam = 'FERRERO1M' 
        THEN  'FERRERO1'
    WHEN prtnum IN ('XBR140006T', 'XCA02334', 'XCA02344')
        AND prtfam = 'FERRERO2M'
        THEN 'FERRERO2'
    WHEN prtnum IN ('XBR140006T', 'XCA02334', 'XCA02344')
        AND prtfam = 'FERRERO3M'
        THEN 'FERRERO3'
    WHEN prtnum IN ('XBR140006T', 'XCA02334', 'XCA02344')
        AND prtfam = 'FERRERO1'
        THEN 'FERRERO1M'
    WHEN prtnum IN ('XBR140006T', 'XCA02334', 'XCA02344')
        AND prtfam = 'FERRERO2'
        THEN 'FERRERO2M'
    WHEN prtnum IN ('XBR140006T', 'XCA02334', 'XCA02344')
        AND prtfam = 'FERRERO3'
        THEN  'FERRERO3M'
END
WHERE prtnum IN ('XBR140006T', 'XCA02334', 'XCA02344')
  AND prtfam IN ('FERRERO1M','FERRERO2M','FERRERO3M','FERRERO1','FERRERO2','FERRERO3')

伙计,那个费列罗人正在给你下地狱。

编辑:添加了 WHERE 子句以避免尝试更新不包含在 CASE ... WHEN 块中的行。

【讨论】:

  • 我有一些非常相似的东西,但我回来了“更新或删除语句必须包含 where 子句”。有什么想法吗?
  • 好吧,如果那个 CASE ... WHEN 块不包含整个 Universe,那么查询可能会失败。让我添加一些东西
  • 情况很好。我不是一个非常大的 SQL 人(Web 开发人员),所以我不是 100% 了解 CASE 结构/逻辑/它是如何编译的。我知道还有其他条件显然被遗漏/逃避了案件,从而导致没有设置。这就说得通了。如果不满足上述条件,是否可以使用关键字“退出”逻辑结构?
  • 谢谢你,阿梅纳迪尔!完美运行
猜你喜欢
  • 2013-05-11
  • 2021-06-23
  • 2012-07-19
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多