mysql - 多列 SQL 的 Case Then 语句

标签 mysql sql set case

如何使用 Case-Then 设置两列的值? 我有下一个脚本:

  UPDATE [dbo].[operation_data]
SET block_status = CASE
WHEN sd.status = 'X' THEN 'F'
WHEN sd.status != 'X' and od.block_status = 'F' THEN NULL
ELSE block_status
END
FROM operation_data od
JOIN sales_data sd on sd.operation_data_id = od.operation_data_id
GO

但我想做这样的事情

  WHEN sd.status = 'X' THEN 'F' AND main_comment = 'Expired'

“main_comment”是操作数据中的列。 据我所知,CASE 只能返回单列。有什么好的解决方案吗?

最佳答案

您还必须对另一列重复此操作:

UPDATE [dbo].[operation_data]
SET block_status = CASE
WHEN sd.status = 'X' THEN 'F'
WHEN sd.status != 'X' and od.block_status = 'F' THEN NULL
ELSE block_status
END
, main_comment = CASE
WHEN sd.status = 'X' THEN 'expired'
ELSE main_comment
END
FROM operation_data od
JOIN sales_data sd on sd.operation_data_id = od.operation_data_id

关于mysql - 多列 SQL 的 Case Then 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50943264/

相关文章:

mysql - 可以从 LibreOffice Base 修改表格条目吗?

mysql - 比较数据库中的字符串

python - 查找数组中创建所需结果的所有组合

python - python中的列表列表集

MySql - 选择 MAX 和 MIN 并返回相应的行

android - 我的应用程序在 AVD 上完美运行,但在真实设备上时,它不会将数据发送到我的 wampserver

php - Move_uploaded_file() 函数显示错误

SQL物化路径还是有更简单的方法?

java - Derby 战的直播结果

c++ - 如何在 std::set 中选择随机元素?