添加带有数据的新列

Adding a new column with data

下面是我的table:

Id  Name    City    Managerid  
------------------------------
1   Shawn   NYC     3
2   Kevin   Mumbai  4
3   Ryan    Mumbai  1
4   Kanye   SF      1

现在我想添加一个名为 'Gender' 的新列,其值分别为 4 行 M,M,M,F

我首先使用以下方法添加了一个新列:

alter table employee add gender varchar(50)

现在我明白了,我可以通过以下方式一个接一个地添加数据:

update employee 
set gender = 'M' 
where id = 1

但是如何一次添加所有 4 个数据?

你不需要,除非有一些其他的关系数据允许引擎以某种方式对行进行分组。例如,如果所有男性都在孟买。或者,您可以在 2 个语句中完成。

update employee set gender= 'M' where id IN (1, 2, 3)
update employee set gender= 'F' where id IN (4)

但是如果你有大量的男性和女性需要在添加列后更新,这仍然没有用。

  1. 使用要添加到新列的数据创建并填充 table-valued 变量 @genderInfo
  2. 将列添加到目标 table,请注意它必须 NULL 可以开头。
  3. 使用原始 table-valued 变量执行 UPDATEJOIN
  4. 将新添加的列更改为 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;