gpt4 book ai didi

sql - 用一个值更新列的第一次出现,用其他值更新其余的

转载 作者:行者123 更新时间:2023-12-04 16:47:23 25 4
gpt4 key购买 nike

select emp_id, emp_dept, emp_name
from employee
where emp_id in (123, 234);


emp_id emp_dept emp_name
*****************************
123 222 1234
123 222 5678
123 222 9101
234 222 1011
234 222 1112
234 222 1213

这里每个 emp_id 有 3 条记录。我想要一个更新 emp_dept 的查询,以便在三条记录中,只有一条记录将更新为 555(可以是任何记录,无关紧要),另外两条将更新为 666。

最佳答案

创建一个 CTE(公用表表达式)添加一个 ROW_NUMBER 窗口函数 partitioned by emp_id 然后写一个update 语句加入 cte 并构建一个 case 语句以确定行号

下面的代码构建了一个带有测试数据的表变量,选择数据以显示“之前”,然后使用 cte 方法进行修改并选择数据以显示最终结果。

 ;WITH cte AS (
SELECT
emp_id
,ROW_NUMBER() OVER (PARTITION BY emp_id ORDER BY emp_SSN) AS RowNum
FROM
@Table
)

UPDATE t
SET emp_dept = CASE WHEN RowNum = 1 THEN 555 ELSE 666 END
FROM
@Table t
INNER JOIN cte u
ON t.emp_id = u.emp_id

关于sql - 用一个值更新列的第一次出现,用其他值更新其余的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com