Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中使用条件UPDATE语句_Sql_Sql Server - Fatal编程技术网

在SQL中使用条件UPDATE语句

在SQL中使用条件UPDATE语句,sql,sql-server,Sql,Sql Server,我希望有这样一个更新声明: SELECT * FROM Employee WHERE age = CASE WHEN (age < 20) THEN age=15 WHEN (age > 20) THEN age= 20 这在SQL Server/MySQL中是不可能的吗?我不想使用存储过程或其他东西 建议我解决这个问题的合适方法。您可以在更新中使用case语句,如下所示 UPDATE Employee SET Age = CASE WHEN (age < 20

我希望有这样一个更新声明:

 SELECT *
 FROM Employee
 WHERE age = CASE 
 WHEN (age < 20) THEN age=15
 WHEN (age > 20) THEN age= 20
这在SQL Server/MySQL中是不可能的吗?我不想使用存储过程或其他东西


建议我解决这个问题的合适方法。

您可以在更新中使用case语句,如下所示

UPDATE Employee 
SET Age = CASE WHEN (age < 20) THEN 15
              ELSE 20 END

我想你想要的是:

UPDATE EMPLOYEE
SET age =
CASE WHEN AGE < 20 THEN 15
ELSE 20 END

哈,我们一定是走错了路,键入了答案-我提交时没有看到任何其他答案:-我喜欢与op的代码和您的代码的唯一不同之处是更新而不是选择,您添加了一个else子句,并将作业作为案例,而不是放在where中@EBarr-您提交时没有看到任何其他答案的原因是因为您是第一个…谢谢。。它工作得很好。我也在MS SQL Server和MySQL Server上使用它。UPDATE testingtable SET dob=当DATEDIFFCURRENT_时间戳,ADDDATEdob,INTERVAL-2 day>1时的情况,然后ADDDATEdob,INTERVAL-2 day ELSE当前_时间戳在username='bob'处结束;。感谢您的回复。如果不满足条件,请保留值,然后将该值设置为fieldname。例如,ELSE 20结束以上的是ELSE年龄结束