4

我想完成以下事情:

Select DISTINCT(tableA.column) INTO tableB.column FROM tableA

目标是选择一个不同的数据集,然后将该数据插入到新表的特定列中。

4

4 回答 4

8
SELECT column INTO tableB FROM tableA

SELECT INTO 将在向其中插入新记录时创建一个表。如果这不是您想要的(如果 tableB 已经存在),那么您将需要执行以下操作:

INSERT INTO tableB (
column
)
SELECT DISTINCT
column
FROM tableA

请记住,如果 tableb 有更多的列,那么您将需要列出您将插入的列(就像我在示例中所做的那样)。

于 2009-12-22T19:42:18.753 回答
4

你几乎在那里。

SELECT DISTINCT column INTO tableB FROM tableA

它将插入到选择列表中指定的任何列中,因此如果您需要插入tableB不在tableA.

选择进入

于 2009-12-22T19:37:14.273 回答
2

尝试以下...

INSERT INTO tableB (column)
Select DISTINCT(tableA.column)
FROM tableA
于 2009-12-22T19:40:05.500 回答
0
目标是选择一个不同的数据集,然后将该数据插入到新表的特定列中。

我不知道 tableB 的架构是什么...如果表 B 已经存在并且列上没有唯一约束,您可以像其他人在这里建议的那样做......

INSERT INTO tableB (column)Select DISTINCT(tableA.column)FROM tableA

但是如果您对表 B 有唯一约束并且它已经存在,则您必须排除表 B 中已经存在的那些值...

INSERT INTO tableB (column)
Select DISTINCT(tableA.column)
FROM tableA
WHERE tableA.column NOT IN (SELECT /* NOTE */ tableB.column FROM tableB)
-- NOTE: Remember if there is a unique constraint you don't need the more
-- costly form of a "SELECT DISTICT" in this subquery against tableB
-- This could be done in a number of different ways - this is just
-- one version. Best version will depend on size of data in each table,
-- indexes available, etc. Always prototype different ways and measure perf.

于 2009-12-22T20:48:11.677 回答