Вставка с использованием "не существует" в SQL server
Всем Привет,
Я сталкиваюсь с проблемой, когда пытаюсь вставить значения во временную таблицу, используя not exists.
Ниже приведена фиктивная таблица, которую я создал:
CREATE TABLE TEST_DEL(ID INT, NAME VARCHAR(10))
фиктивные вставки:
INSERT INTO TEST_DEL VALUES(1, 'A') INSERT INTO TEST_DEL VALUES(2, 'B') INSERT INTO TEST_DEL VALUES(2, 'C') INSERT INTO TEST_DEL VALUES(3, 'D') INSERT INTO TEST_DEL VALUES(4, 'E')
создание временных таблиц структуры, чтобы получить одну запись для каждого 'идентификатор' значение из Test_DEL стол:
SELECT * INTO #TEMP FROM TEST_DEL WHERE 1=0
я подготовил следующий запрос, чтобы вставить одну запись во временную таблицу для каждого идентификатора из Test_DEL:
INSERT INTO #TEMP (ID, NAME) SELECT a.ID, a.NAME FROM TEST_DEL A WHERE NOT EXISTS(SELECT 1 FROM #TEMP B WHERE B.ID = A.ID
здесь мое ожидание с этим запросом состоит в том, чтобы проверить каждую запись со значением id перед вставкой во временную таблицу, если она еще не существует, то вставить, и если какая-либо запись существует со значением ID во временной таблице, пропустить эту запись из вставки.
Я должен получить 4 записи в #temp bu я получаю все 5 записей.
может ли кто-нибудь, пожалуйста, подсказать, что не так в запросе, который я написал?
Заранее спасибо.
Что я уже пробовал:
Попробовал вышеописанный оператор insert с "not exists", но он не работает.
pt1401
Почему вы думаете, что должны получить только 4 записи?
Выберите * INTO #TEMP из TEST_DEL, где 1=0 ничего не вставляет, он просто создает пустую временную таблицу с правильной схемой.