Sql 这可以用一个简单的语句来简化吗?
如何简化此代码?只需将整列的Sql 这可以用一个简单的语句来简化吗?,sql,sql-server,Sql,Sql Server,如何简化此代码?只需将整列的Null更新为具有相应ID的名称 update salesman set name = 'James Hoog' where salesman_id = 5001 update salesman set name = 'Nail Knite' where salesman_id = 5002 update salesman set name = 'Pit Alex' where Salesman_id = 5005 update salesman set n
Null
更新为具有相应ID的名称
update salesman
set name = 'James Hoog'
where salesman_id = 5001
update salesman
set name = 'Nail Knite'
where salesman_id = 5002
update salesman
set name = 'Pit Alex'
where Salesman_id = 5005
update salesman
set name = 'Mc Lyon'
where salesman_id = 5006
使用
CASE
语句为每个saller\u id
这样试试
UPDATE salesman
SET NAME = CASE salesman_id
WHEN 5001 THEN 'James Hoog'
WHEN 5002 THEN 'Nail Knite'
WHEN 5005 THEN 'Pit Alex'
WHEN 5006 THEN 'Mc Lyon'
END
WHERE salesman_id IN ( 5001, 5002, 5005, 5006 )
如果名称和id位于不同的表中,则执行更新/联接
WITH cte as (
SELECT 'James Hoog' as name, 5001 as salesman_id UNION ALL
SELECT 'Nail Knite' as name, 5002 as salesman_id UNION ALL
SELECT 'Pit Alex' as name, 5005 as salesman_id UNION ALL
SELECT 'Mc Lyon' as name, 5006 as salesman_id
)
UPDATE s
SET s.name = c.name
FROM salesman s
JOIN cte c
ON s.salesman_id = c.salesman_id
尝试进行
合并
:
MERGE salesman AS t
USING (VALUES
(5001, 'James Hoog'),
(5002, 'Nail Knite'),
(5005, 'Pit Alex'),
(5006, 'Mc Lyon'))
AS s (salesmain_id, name)
ON (t.salesman_id = s.salesman_id)
WHEN MATCHED THEN
UPDATE SET name = s.name;
有其他名字的行呢?谢谢。如果我要在给定列表中添加两组新列:纽约、巴黎、伦敦、丹麦作为地点,工资为1500、1300、1200、1100,分别为5001、5002、5005、5006,该怎么办?如何以最简单的方式在一条语句中将它们添加到代码中?
UPDATE salesman SET
NAME = CASE WHEN salesman_id = 5001 THEN 'James Hoog'
WHEN salesman_id = 5002 THEN 'Nail Knite'
WHEN salesman_id = 5005 THEN 'Pit Alex'
WHEN salesman_id = 5006 THEN 'Mc Lyon' END
WHERE salesman_id IN (5001,5002,5005,5006)