考虑下表
CREATE TABLE Main (
id INT PRIMARY KEY,
state VARCHAR(255) DEFAULT NULL
)
CREATE TABLE ColorTable (
color VARCHAR(255),
state VARCHAR(255)
)
INSERT INTO Main (id, state) VALUES
(1, 'A'),
(2, 'B'),
(3, 'C'),
(4, 'B'),
(5, 'C'),
(6, 'A'),
(7, NULL)
INSERT INTO ColorTable (color, state) VALUES
('Yellow', 'A'),
('Red', 'B'),
('Green', 'C'),
('Black', NULL)
我想在“主”表中添加一个新列“颜色”。我希望每个 id 的颜色都基于“Main”中的状态和“ColorTable”中的相应颜色。
我可以通过以下方式实现这一点:
ALTER TABLE main
ADD color VARCHAR(255)
UPDATE main
SET main.color = ColorTable.color
FROM main
LEFT JOIN ColorTable ON main.state = ColorTable.state
UPDATE main
SET color = 'Red'
WHERE state IS NULL
我很好奇这样做的替代方法——我可以使用 SELECT INTO 或其他方法获得相同的结果吗?
不,您不能在一个语句中更改表结构并将数据插入新列。
但您可以结合最近 2 个更新: