Я новичок в stackoverflow, поэтому, пожалуйста, будьте нежны. У меня серьезные проблемы с синтаксисом моего SQL. Суть в том, что я хочу скопировать из одной таблицы в другую без дубликатов. Я собирался сравнить два поля и только вставить, если в поле назначения1 есть NULL для поля1.Синтаксис SQL - LEFT JOIN
Пожалуйста, знайте, что я новичок в операторах SQL, поэтому любое расширенное знание было бы полезно ... например, я могу использовать переменные. Я получил исходное заявление из исследования stackoverflow, но не смог его завершить.
Вот что у меня есть, и спасибо за помощь:
INSERT INTO destinationTB
SELECT sourceTB.field1, destinationTB.field1
FROM sourceTB
LEFT JOIN destinationTB
ON sourceTB.field1 = destinationTB.field1
WHERE destinationTB.field1 IS NULL;
----- REVISED ВОПРОС -----
Спасибо за советы! Я постараюсь пересмотреть вопрос (и будущие вопросы), чтобы быть более понятным, и мои извинения за неуклюжий запах «нового ребенка» в моем последнем вопросе.
Конечным результатом, который я ищу, является копирование из одной таблицы в другую без дубликатов. Есть две таблицы, с которыми я работаю. Первый - это destinationTB, который имеет четыре поля, только один из которых я хотел бы заполнить. Вторая таблица - sourceTB, которая имеет несколько полей, но только одна из которых мне нужна для получения информации. Мой план состоял в том, чтобы запустить INSERT в destinationTB. Поскольку первое значение не было там, оно должно отчитываться как NULL. После того, как первая вставка была выполнена, и строка все еще работала с теми же значениями, которые существовали в настоящее время, она больше не будет сообщать NULL и будет двигаться дальше, пока не найдет другое значение, которое не было в целевом ТБ.
В качестве примера возьмем телевизор. Существует несколько разных производителей телевизоров. В этом примере мы скажем, что у нас есть SHARP-32in, SHARP-45in и SHARP-60in. Я хочу, чтобы destinationTB имел только один экземпляр SHARP (хотя в sourceTB есть три экземпляра.Так что я пытался сравнить destinationTB.manufacturer с sourceTB.manufacturer, используя этот оператор JOIN. Когда я запускаю этот запрос, который я буду вставлять после этот пункт, он возвращает все три экземпляра, так что я в конечном итоге с тремя SHARP значениями в моей destinationTB
вот мой последний, который я пытался на основе от ваших предложений:.
INSERT INTO destnationTB (field1)
SELECT sourceTB.field1
FROM sourceTB
LEFT JOIN destinationTB ON sourceTB.field1 = destinationTB.field1
WHERE destinationTB.field1 IS NULL;
Я ответил на аналогичный вопрос некоторое время назад почитайте этот ответ, и если у вас есть вопросы опубликовать обновление. См. Эту ссылку http://stackoverflow.com/questions/13869475/is-there-any-way-to-check-whether-or-not-the-query-inside-a-mysql-trigger-return/13875059#13875059 – Namphibian
О, да, добро пожаловать в SO, а не в плохую попытку первого вопроса, но предоставляем немного больше информации о том, где ваши проблемы лежат. – Namphibian
Вы используете MySQL или SQL Server? Этот вопрос отмечен как оба. –