update case when的使用

本文介绍了一种使用SQL案例语句根据玩家年龄更新活动组别的方法,并展示了如何查询更新后的组别信息。

示例:根据年龄确定组别

-- 更新
update `act_txtx_players_mf` as pmf inner join `act_txtx_players` as p on pmf.players_id=p.id set pmf.act_group=(
	case 
	when p.age<7 then 1 
	when p.age<10 then 2 
	else 3 end
) WHERE pmf.mid=2


-- 查询
select pmf.players_id,pmf.mid,p.age,
(
	case 
	when p.age<7 then 1 
	when p.age<10 then 2 
	else 3 end
) as actgroup 
from `act_txtx_players_mf` as pmf 
inner join `act_txtx_players` as p on pmf.players_id=p.id 
where pmf.mid=2
在MySQL中,CASE语句是一种条件表达式,允许根据一系列的条件来返回不同的值,在UPDATE语句中使用CASE WHEN能按条件更新数据。 以在PHP中使用MySQL UPDATE语句按条件更新数据为例,若数据表中state字段为0,则更新为1同时更新字段state_time为当前时间的时间戳;若state字段为1,则更新为0,同时state_time更新为NULL。构造的UPDATE语句如下: ```php $sql = " UPDATE your_table_name SET state = CASE WHEN state = 0 THEN 1 ELSE 0 END, state_time = CASE WHEN state = 0 THEN UNIX_TIMESTAMP(NOW()) ELSE NULL END WHERE some_condition; -- Replace with the appropriate condition for selecting records to update "; $result = $conn->query($sql); ``` 此示例中,根据state字段的不同值更新了state和state_time字段的值,通过CASE WHEN实现不同条件下的不同更新逻辑,并且通过WHERE子句指定更新记录的筛选条件 [^2]。 另外,若要将表中数据进行交换,如P_key是表A_TEST1的主键,当结果a和b的顺序搞反,需要把a和b倒换过来,使用Case函数会使操作更简单 [^4]。 还有使用CASE WHEN进行数据转换的示例,如下是使用普通CASE函数和搜索CASE函数进行数据转换的SQL语句: ```sql -- 使用普通case函数 SELECT NAME, max( CASE class WHEN '语文' THEN grade ELSE 0 END ) 语文, max( CASE class WHEN '数学' THEN grade ELSE 0 END ) 数学, max( CASE class WHEN '英语' THEN grade ELSE 0 END ) 英语 FROM t_source GROUP BY NAME; -- 使用搜索case函数 SELECT NAME, max( CASE WHEN class = '语文' THEN grade ELSE 0 END ) 语文, max( CASE WHEN class = '数学' THEN grade ELSE 0 END ) 数学, max( CASE WHEN class = '英语' THEN grade ELSE 0 END ) 英语 FROM t_source GROUP BY NAME; ``` 虽然这里主要展示的是SELECT语句中的用法,但在UPDATE语句中使用CASE WHEN的逻辑与之类似,可根据具体需求修改为UPDATE语句,根据不同条件更新相应字段 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值