首页 > 解决方案 > 根据另一列的数据将数据插入列

问题描述

如果另一列中存在特定单词,我希望有一个包含数据的附加列(如果 column_a 中有“foo”或“bar”,则 column_b 应该为 1)。

INSERT INTO table_x_copy
SELECT (CASE WHEN (column_a LIKE '%foo%' OR column_a LIKE '%bar%') THEN 1 ELSE 0 END) AS column_b
FROM table_x

我收到错误:

列名或提供的值的数量与表定义不匹配。

不管有没有column_b预先添加。

标签: sqlsql-server

解决方案


如果要更新现有表,则应使用 UPDATE 语句。INSERT 只是将新行添加到表中。

UPDATE table_x_copy
SET column_b = (CASE WHEN (column_a LIKE '%foo%' OR column_a LIKE '%bar%') THEN 1 ELSE 0 END)

如果您的表不包含 column_b 列,只需在 UPDATE 之前执行以下查询:

ALTER TABLE table_x_copy
ADD column_b int; 

推荐阅读