如何应用规则根据条件和对数据进行分组来更新字段中的记录[关闭]
Posted
技术标签:
【中文标题】如何应用规则根据条件和对数据进行分组来更新字段中的记录[关闭]【英文标题】:How can I apply a rule to update records in a field based on a condition and by grouping the data [closed] 【发布时间】:2020-10-17 21:22:04 【问题描述】:我正在尝试在 sql 中执行此任务。但我无法得出有助于获得此输出的逻辑。
【问题讨论】:
mysql SQL Server。请仅标记一个数据库。 【参考方案1】:看起来你想为每个 id 带上代码为“x”的玩家的名字。如果是这样,一个选项使用窗口函数:
select id, playercode, playername,
max(case when playercode = 'x' then playername end) over(partition by id) requiredoutput
from mytable
如果您的数据库不支持窗口函数,则一种选择使用相关子查询。假设(id, playercode)
上没有重复:
select id, playercode, playername,
(
select t1.playername
from mytable t1
where t1.id = t.id and t1.playercode = 'x'
) requiredoutput
from mytable t
【讨论】:
谢谢。一个小小的疑问。如果我有一些其他播放器代码,如“Z”,我不想更新或分配“X”的值怎么办?我想保持这些记录原样! @sam:您通常会使用case
表达式,例如case when playercode = 'z' then playername else max(case when playercode = 'x' then playername end) over(partition by id) end
【参考方案2】:
如果您正在寻找更新声明,也许这样的事情会起作用
with upd_cte as (
select distinct id, player_name
from tTable
where Playercode='x')
update t
set requiredoutput=u.player_name
from tTable t
join upd_cte u on t.id=u.id;
【讨论】:
以上是关于如何应用规则根据条件和对数据进行分组来更新字段中的记录[关闭]的主要内容,如果未能解决你的问题,请参考以下文章