SQL Выбрать в поле - PullRequest
       48

SQL Выбрать в поле

4 голосов
/ 22 декабря 2009

Я хочу сделать что-то из следующего:

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

Цель состоит в том, чтобы выбрать отдельный набор данных и затем вставить эти данные в определенный столбец новой таблицы.

Ответы [ 4 ]

8 голосов
/ 22 декабря 2009
SELECT column INTO tableB FROM tableA

SELECT INTO создаст таблицу при вставке в нее новых записей. Если это не то, что вы хотите (если tableB уже существует), вам нужно будет сделать что-то вроде этого:

INSERT INTO tableB (
column
)
SELECT DISTINCT
column
FROM tableA

Помните, что если в tableb есть больше столбцов, чем один, вам нужно будет перечислить столбцы, в которые вы будете вставлены (как я сделал в моем примере).

4 голосов
/ 22 декабря 2009

Ты в значительной степени там.

SELECT DISTINCT column INTO tableB FROM tableA

Он будет вставлен в те столбцы, которые указаны в списке выбора, поэтому вам нужно будет присвоить псевдонимы выбранным значениям, если вам нужно вставить столбцы tableB, которых нет в tableA.

ВЫБРАТЬ В

2 голосов
/ 22 декабря 2009

Попробуйте следующее ...

INSERT INTO tableB (column)
Select DISTINCT(tableA.column)
FROM tableA
0 голосов
/ 22 декабря 2009
Цель состоит в том, чтобы выбрать отдельный набор данных и затем вставить эти данные в определенный столбец новой таблицы.

Я не знаю, что это за схема tableB ... если таблица B уже существует и нет уникальных ограничений на столбец, которые вы можете сделать, как предлагают другие здесь .... INSERT INTO tableB (column)Select DISTINCT(tableA.column)FROM tableA

но если у вас есть уникальное ограничение для таблицы B, и оно уже существует, вам придется исключить эти значения уже в таблице B ...

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

...