如何用case/when语句实现不同条件下更新同一张数据表的不同字段?
现有数据表t_data(id,type,field1,field2)。现在希望写一条update语句,实现当type='A'时更新field1的值为'X',当type='...
现有数据表t_data(id, type ,field1, field2)。
现在希望写一条update语句,实现当type='A'时更新field1的值为'X',当type='B'时更新field2的值为'X'。
请问能否用case/when实现该功能?谢谢。 展开
现在希望写一条update语句,实现当type='A'时更新field1的值为'X',当type='B'时更新field2的值为'X'。
请问能否用case/when实现该功能?谢谢。 展开
展开全部
可使用case when来实现这个条件,需要嵌套子查询语句,sql语句代码示例如下:
1、首先你这里的不同字段应该有个优先级别,类似先判断哪个字段然后判断哪个字段。如果仅仅以字段和字段值来作为条件 用DECODE 套 DECODE 直到符合你的逻辑需求。
2、如果牵扯到两个字段值的比较。例如:如果字段A等于字段B则显示XXX 这种判断请使用NULLIF配合DECODE也可以用WHEN CASE (9以前可能不支持NULLIF)。
3、如果是模糊比较例如:字段A大于字段B,需要更多的函数来判断常用的有SIGN通过加减法之后的结果来判断两个字段大小。
举例如下:
1、数据表为DemoTable,字段有id, condition1,condition2,condition3,condition4,condition5
2、要求是查询DemoTable中,condition1,condition2,condition3,condition4,condition5五个字段中符合任意两个或两个以上的条件的内容。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询