【发布时间】:2020-10-17 21:22:04
【问题描述】:
我正在尝试在 sql 中执行此任务。但我无法得出有助于获得此输出的逻辑。
【问题讨论】:
-
MySQL SQL Server。请仅标记一个数据库。
标签: mysql sql subquery window-functions
我正在尝试在 sql 中执行此任务。但我无法得出有助于获得此输出的逻辑。
【问题讨论】:
标签: mysql sql subquery window-functions
看起来你想为每个 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
【讨论】:
case 表达式,例如case when playercode = 'z' then playername else max(case when playercode = 'x' then playername end) over(partition by id) end
如果您正在寻找更新声明,也许这样的事情会起作用
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;
【讨论】: