【发布时间】:2019-05-09 11:29:00
【问题描述】:
我有一个要求,我需要在检查这些列是否存在后从源表中添加多个列。例如:
Table1 包含 7 列,如 A、B、C、D、E、F、G 和 Table2 包含 4 列,如 A、B、C、D
我想检查 Table2 中 table1 列的存在性,如果不存在,则在 Table2 中添加其余 3 列。我正在寻找一种解决方案,如果 table2 中不存在这些列,我不需要手动添加这些列。
我该怎么做?
我试过这个:
if exists (SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='table1' and COLUMN_NAME in('A','B','C','D','E','F','G'))
BEGIN
ALTER TABLE table2
ADD [E] FLOAT null
,[F] FLOAT null
,[G] FLOAT null
END;
但这不是我的查询的解决方案我想让它动态并且不知道如何做到这一点。
【问题讨论】:
-
您必须使用动态 SQL。到目前为止,您尝试过什么?
-
从系统表中您将能够获得两个表的列列表。然后比较并在 table2 中插入缺失的列。正如@Larnu 所说,您需要为此执行动态 SQL。
-
动态添加列似乎是一个非常糟糕的主意。我怀疑您的处理过程中还有其他问题。
标签: sql sql-server