SQL запрос отдельного соединения - PullRequest
0 голосов
/ 25 августа 2010

Извините, я пропустил и снова удалил ранее заданный вопрос.

У меня возникла ситуация, я пытаюсь выбрать новые значения из таблицы 1, которые являются новыми, и сохранить их в таблице 2. Проблема в том, что в таблице есть дубликаты в столбце "имя", но в нем есть ключевой столбец"id", но разные идентификаторы, конечно, соответствуют одному и тому же имени.

Моя идея запроса будет

INSERT INTO TABLE2 
(NAME, UniqueID) 
  SELECT DISTINCT TABLE1.NAME, TABLE1.ID 
  FROM TABLE1 
  LEFT JOIN TABLE2 ON TABLE1.ID=TABLE2.UniqueID 
  WHERE TABLE2.NAME IS NULL 

Нужна помощь в получении запроса, чтобы вернуть желаемые результаты,Прямо сейчас он все еще производит дубликаты в таблице 2 (в столбце имени), что мне не нужно.Я хотел бы, чтобы он только добавлял новые записи, даже если я запускаю запрос несколько раз.Например, если две новые записи были добавлены в таблицу 1, но у одной уже есть имя в таблице 2, то запрос добавит только 1 новую запись в таблицу 2

, просто примечание: я использую доступ ms, поэтому он имеетстрогий синтаксис для отдельных запросов

РЕДАКТИРОВАТЬ:

Свертывание ввода Я пришел с этим запросом

INSERT INTO TABLE2 
(NAME, UniqueID) 
  SELECT TABLE1.NAME, Min(TABLE1.ID) 
  FROM TABLE1 
  LEFT JOIN TABLE2 ON TABLE1.NAME=TABLE2.NAME 
  WHERE TABLE2.UniqueID IS NULL 
  Group By TABLE1.NAME;

, но на самом деле их нужно было разделить надва отдельных wueries в доступе для запуска без флага ошибки reserver, но теперь я столкнулся с дополнительной проблемой.Когда я запускаю два отдельных запроса, в первый раз он работает нормально, но когда я запускаю его дважды, пытаясь проверить, добавлены ли какие-либо новые записи в таблицу 1, он добавляет 1 запись, когда в таблице 1 нет новых записей., поэтому он добавляет пустое значение имени и дублирующий уникальный идентификатор, и постоянно выполняет этот процесс каждый раз, когда я запускаю его.

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Поскольку вы извлекаете и имя, и идентификатор, отдельное ключевое слово будет извлекать только отдельные комбинации из них. Две записи с одинаковыми именами и разными идентификаторами все еще действительны.

В случае двух Имен с разными идентификаторами, что бы вы хотели вставить? ...

insert into table2 (Name, UniqueID)
select t1.Name, MIN(t1.ID)
from table1 t1
left join table2 t2 on t1.ID = t2.UniqueID
where t2.Name is null
group by t1.Name

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

insert into table2 (Name, UniqueID)
select t1.Name, MIN(t1.ID)
from table1 t1
left join table2 t2 on t1.Name = t2.Name
where t2.UniqueID is null
group by t1.Name
1 голос
/ 25 августа 2010
INSERT INTO TABLE2 (UniqueID, NAME)  
SELECT min(t1.ID) as UniqueID, t1.NAME  
FROM TABLE1 t1 
LEFT JOIN TABLE2 t2 ON t1.ID=t2.UniqueID  
WHERE t2.NAME IS NULL  
group by t1.NAME  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...