以下是我的表格:
Id Name City Managerid
------------------------------
1 Shawn NYC 3
2 Kevin Mumbai 4
3 Ryan Mumbai 1
4 Kanye SF 1
现在我想分别在4行中添加名为“Gender”的新列,其值为M,M,M,F
。
我首先使用以下方法添加了一个新列:
alter table employee add gender varchar(50)
现在我明白我可以使用以下方法逐个添加数据:
update employee
set gender = 'M'
where id = 1
但是如何一次添加所有4个数据呢?
答案 0 :(得分:1)
除非有一些其他的关系数据允许引擎以某种方式对行进行分组,否则你不会这样做。例如,如果所有男性都在孟买。或者,您可以在2个语句中完成。
update employee set gender= 'M' where id IN (1, 2, 3)
update employee set gender= 'F' where id IN (4)
但如果您在添加色谱柱后需要更新大量男性和女性,这仍然没有用。
答案 1 :(得分:1)
@genderInfo
。NULL
才能开始。UPDATE
执行JOIN
。NOT NULL
- 假设现在所有行都有值。像这样:
-- 1:
DECLARE @genderInfo AS TABLE
(
EmployeeId int PRIMARY KEY,
Gender varchar(50) NOT NULL
)
INSERT INTO @genderInfo ( EmployeeId, Gender ) VALUES
( 1, 'M' ),
( 2, 'M' ),
( 3, 'M' ),
( 4, 'F' );
-- 2:
ALTER TABLE
Employees
ADD
Gender varchar(50) NULL;
-- 3:
UPDATE
e
SET
e.Gender = gi.Gender
FROM
Employees AS E
INNER JOIN @genderInfo AS gi ON e.EmployeeId = gi.EmployeeId
-- 4:
ALTER TABLE
Employees
ALTER COLUMN
Gender varchar(50) NOT NULL;