任务是创建sql脚本,设置标志" Y"或" N"存在虚拟数据库线"状态"如果整数值更多或更少' 10'
数据库由三列组成 人 钱(5或100) 状态(虚拟 - 应通过存储过程更新)
解决方案
update status set flag = "Y" where money = '5' and
status set flag = "N" where money = '100'
SQL脚本新手
答案 0 :(得分:2)
UPDATE
people
SET
status = CASE WHEN money = '5' THEN 'Y'
WHEN money = '100' THEN 'N'
ELSE status
END
WHERE
money IN ('5', '100')
通过该查询向后工作......
WHERE
子句确保只更新您要更新的行。
CASE
语句会根据status
中的现有值选择要设置money
的值。
ELSE
块永远不会发生,但是作为故障安全存在(如果您在运行它时忘记包含WHERE
子句,则值对于status
不是status
或money
)的任何行,'5'
的{{1}}设置为当前值。
编辑:
注意:
'100'
应该是 表的名称
people
应该是 字段的名称
最终编辑(我现在放弃):
status
这将更新UPDATE
people
SET
status = CASE WHEN money > 10 THEN 'Y' ELSE 'N' END
;
中 每个 行。
如果将people
设置为status
,则'Y'
会将money > 10
设置为status
到'N'
。
答案 1 :(得分:0)
如何使用CASE
评估条件列表并返回多个可能的条件之一 结果表达式。
CASE表达式有两种格式:
•简单的CASE表达式 将表达式与一组简单表达式进行比较以确定 结果
•搜索的CASE表达式计算一组布尔表达式 确定结果。
update [status]
set [flag] =
CASE
WHEN [money] = '5' THEN 'Y'
WHEN [money] = '100' THEN 'N'
END
WHERE [money] in ('5','100')