Отрицание внутри правил лексера и парсера

Ответы выше, которые говорят о нормализации, велики! Но что, если вы окажетесь в такой позиции, как я, где вам не разрешено касаться схемы или структуры базы данных в ее нынешнем виде? Например, DBA - это «боги», и все предлагаемые изменения идут в / dev / null?

. В этом отношении я чувствую, что также ответил на эту публикацию Stack Overflow в отношении всех пользователей выше, дающих образцы кода.

Я пересказываю код из INSERT VALUES WHERE NOT EXISTS , который помог мне больше всего, так как я не могу изменить какие-либо базовые таблицы базы данных:

INSERT INTO #table1 (Id, guidd, TimeAdded, ExtraData)
SELECT Id, guidd, TimeAdded, ExtraData
FROM #table2
WHERE NOT EXISTS (Select Id, guidd From #table1 WHERE #table1.id = #table2.id)
-----------------------------------
MERGE #table1 as [Target]
USING  (select Id, guidd, TimeAdded, ExtraData from #table2) as [Source]
(id, guidd, TimeAdded, ExtraData)
    on [Target].id =[Source].id
WHEN NOT MATCHED THEN
    INSERT (id, guidd, TimeAdded, ExtraData)
    VALUES ([Source].id, [Source].guidd, [Source].TimeAdded, [Source].ExtraData);
------------------------------
INSERT INTO #table1 (id, guidd, TimeAdded, ExtraData)
SELECT id, guidd, TimeAdded, ExtraData from #table2
EXCEPT
SELECT id, guidd, TimeAdded, ExtraData from #table1
------------------------------
INSERT INTO #table1 (id, guidd, TimeAdded, ExtraData)
SELECT #table2.id, #table2.guidd, #table2.TimeAdded, #table2.ExtraData
FROM #table2
LEFT JOIN #table1 on #table1.id = #table2.id
WHERE #table1.id is null

В приведенном выше коде используются разные поля, кроме того, что у вас есть, но вы получаете общий смысл с помощью различных методов.

Обратите внимание, что в соответствии с исходным ответом на Stack Overflow этот код был скопирован из здесь .

В любом случае моя точка зрения - это «лучшая практика», которая часто сводится к тому, что вы можете и не можете делать, а также теории.

  • Если вы можете нормализовать и генерировать индексы / ключи - отлично!
  • Если нет, и у вас есть возможность использовать такие хаки, как я, надеюсь, что это помогает.

Удачи!

16
задан Bart Kiers 27 November 2011 в 10:30
поделиться