ORACLE/SQL - UPDATE 语句问题(需要 OR 一些集合)
Posted
技术标签:
【中文标题】ORACLE/SQL - UPDATE 语句问题(需要 OR 一些集合)【英文标题】:ORACLE/SQL - UPDATE Statement Issue (Need to OR some sets) 【发布时间】: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'
【问题讨论】:
您可以使用 CASE 和 IN 来执行更新。此处的示例:***.com/questions/5170864/… 【参考方案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 结构/逻辑/它是如何编译的。我知道还有其他条件显然被遗漏/逃避了案件,从而导致没有设置。这就说得通了。如果不满足上述条件,是否可以使用关键字“退出”逻辑结构? 谢谢你,阿梅纳迪尔!完美运行以上是关于ORACLE/SQL - UPDATE 语句问题(需要 OR 一些集合)的主要内容,如果未能解决你的问题,请参考以下文章
oracle SQL语句,能不能同时update一个表的几个字段的值?
Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28