Вы можете использовать not exists
:
INSERT INTO SecondTable(Col1,Col2)
SELECT Col5,Col6
FROM FirstTable ft
WHERE ft.RecType = 'ABC' AND
NOT EXISTS (SELECT 1 FROM SecondTable t2 WHERE t2.col1 = ft.col5 AND t2.col2 = ft.colt6);
В более общем случае я написал код XSLT, который генерирует код интерфейса БД C++. Хотя сначала я пытался произвести правильно форматируемый код от XSLT, это быстро стало ненадежным. Мое решение состояло в том, чтобы полностью проигнорировать форматирование в выводе XSLT и затем выполнить получающуюся очень длинную строку кода через отступ GNU. Это произвело обоснованно отформатированный исходный файл C++, подходящий для отладки.
Я могу предположить, что проблема становится намного более колючей при контакте с объединенным источником, таким как HTML и PHP.
Генерируйте AST, затем пересекают его inorder и испускают исходный код, который правильно отформатирован.
Я нашел, что игнорирование делающий отступ во время поколения является лучшим. Я написал универсальный 'код, форматирующий' механизм, которые отправляют, обработал весь произведенный код. Таким образом, я могу определить делающие отступ правила, и синтаксис кода управляет отдельно от генератора. Существуют ясные преимущества для этого разделения.
Техника, которую я использую, когда генерирующийся код господствует над сгенерированным кодом, состоит в том, чтобы раздать параметр отступа.
например, в Python, генерируя больше Python.
def generateWhileLoop(condition, block, indentPrefix = ""):
print indentPrefix + "while " + condition + ":"
generateBlock(block, indentPrefix + " ")
С другой стороны, в зависимости от моего настроения:
def generateWhileLoop(condition, block, indentLevel = 0):
print " " * (indentLevel * spacesPerIndent) + "while " + condition + ":"
generateBlock(block, indentLevel + 1)
Отметьте предположение это condition
короткая часть текста, который соответствует на той же строке, в то время как block
находится на отдельной строке с отступом. Если этот код не может быть уверен в том, должны ли подэлементы быть расположены с отступом, этот метод начинает падать.
Кроме того, эта техника не почти как полезная для разбрызгивания относительно небольших количеств PHP в HTML.
[Редактирование для разъяснения: Я записал вопрос и также этот ответ. Я хотел отобрать ответы с одной техникой, которую я действительно использую, и иногда полезно, но эта техника приводит меня к сбою для типичного кодирования PHP, таким образом, я ищу другие идеи как он.]
Делая веб-сайты в PHP, я нахожу смешивание HTML и функционально-специализированный PHP проблематичный, это ограничивает обзор и делает отладку тяжелее. Решение постараться не смешиваться в этом случае использует шаблон управляемое содержание, посмотрите Присяжного острослова, например. Кроме лучше intendation, шаблонная обработка содержания полезна для других вещей как, например, быстрее исправляя. Если клиент требует изменения в расположении, которым конкретная проблема расположения может быть быстро найдена и устранена, не беспокоясь функциональным кодом PHP, генерирующим данные (и наоборот).
Я соглашаюсь с ответом oddthinking.
Иногда лучше решать проблему путем инвертирования его. Если Вы генерируете много текста, рассматриваете, кодируют ли его более легкие для записи текста как шаблона с маленькими битами интеллектуального поколения. Или если можно разломать проблему на серия маленьких шаблонов, которые Вы собираете, и затем отступ каждый шаблон в целом.
Конкретно на поколении HTML - почему это имеет значение?
Вы тратите чертовски много времени, раздавая делающие отступ параметры, и пытаясь выяснить, как глубоко вложенный Вы и т.д. Кроме того, чтобы быть общей пустой тратой времени (так как нет никакого различия в финале, представил вывод), как Вы поддерживаете весь этот материал, поскольку Вы добавляете другую разметку HTML и переносите страницы в отделение и т.д.?
Так или иначе установите Firebug (и панель инструментов разработчика IE для тестирования IE впоследствии) и они оба шоу Вы HTML во вложенном формате, И можно просто нажать на элемент страницы для прямого просмотра разметки - ПУТЬ, более эффективный, чем рассмотрение необработанного исходного вывода HTML.
Я ситуация PHP/HTML я пытаюсь сохранить каждый фрагмент кода последовательно располагаемым с отступом в его исходном коде. Это сохраняет код читаемым, где он действительно имеет значение и обычно имеет побочный эффект создания вывода HTML, который читаем. Как другие сказали, поджигатель заботится об остальных.