mysql 需要根据两个不同列中的值的组合更新SQL表列中的数据

idfiyjo8  于 2023-04-19  发布在  Mysql
关注(0)|答案(1)|浏览(108)

我有一个表,其中有两列有问题:Emp_ID和状态
当前表格:
| 员工ID|状态|
| --------------|--------------|
| 十二岁|永久性|
| 十三|休闲|
| 十四岁|温度|
| 十四岁|休闲|
| 十五岁|永久性|
| 十五岁|休闲|
| 十六岁|休闲|
| 十六岁|休闲|
| 十七岁|休闲|
| 十七岁|永久性|
| 十八岁|因果关系|
| 十八岁|休闲|
需要在同一个表中根据员工的ID和状态创建另一列。
状态可以是:永久、临时、临时
一个员工可以同时拥有这三种身份。
我试图做的是创建另一个名为Permanent_Status的列,如果员工具有永久或临时状态,则将其标记为Y,而如果他具有临时状态,则将其设置为N。
另一个警告是,如果员工同时具有永久和临时状态或临时和临时状态,则标志需要设置为Y。
只有当员工具有临时状态时,标志才需要为N。
我用的是MySQL。
我尝试使用更新表语句,但无法找出确切的逻辑
预期输出:
| 员工ID|状态|永久_状态|
| --------------|--------------|--------------|
| 十二岁|永久性|Y|
| 十三|休闲|N|
| 十四岁|温度|Y|
| 十四岁|休闲|Y|
| 十五岁|永久性|Y|
| 十五岁|休闲|Y|
| 十六岁|休闲|N|
| 十七岁|休闲|Y|
| 十七岁|永久性|Y|
| 十八岁|休闲|N|
| 十八岁|休闲|N|

qcuzuvrc

qcuzuvrc1#

您可以使用下面的exists子句来实现您想要的结果-

UPDATE your_table T1
  SET Permanent_Status = 'Y'
 WHERE EXISTS (SELECT NULL
                 FROM your_table T2
                WHERE T1.Emp_ID = T2.Emp_ID
                  AND Status IN ('Permanent', 'Temp')
              );

相关问题