Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
В связи с "импортозамещением" перегоняют с Oracle на MS SQL, хотя чего тут замещенного не понимаю. Ну ладно. Проблема такова. Есть две таблицы по структуре абсолютно одинаковы, периодически в одной нужно обновлять данные другой таблицы. В Oracle я сделал бы так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Как такую конструкцию повторить в ms sql, конкретно 2012 сервер? В postgres в принципе аналогично, а вот с как то не срастается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 10:12 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 10:20 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 10:27 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
iap, подскажите авторNOT EXISTS(SELECT t2.[name] INTERSECT SELECT t1.[name]) такое живёт лучше чем t2.[name] <> t1.[name], без индексов и тп? ну и значительно шире вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 10:32 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Спасибо, понял куда копать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 10:37 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
TaPaKiap, подскажите авторNOT EXISTS(SELECT t2.[name] INTERSECT SELECT t1.[name]) такое живёт лучше чем t2.[name] <> t1.[name], без индексов и тп? ну и значительно шире вариантПо крайней мере NULL здесь не равен NULL. И да, используется индекс, если он есть. Мы тут как-то это обсуждали несколько лет назад. Может, t2.[name] <> t1.[name] OR t2.[name] IS NULL AND t1.[name] IS NOT NULL OR t2.[name] IS NOT NULL AND t1.[name] IS NULL и быстрее отработает, но запись громоздкая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 10:38 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
iapTaPaKiap, подскажите пропущено... такое живёт лучше чем t2.[name] <> t1.[name], без индексов и тп? ну и значительно шире вариантПо крайней мере NULL здесь не равен NULL. И да, используется индекс, если он есть. Мы тут как-то это обсуждали несколько лет назад. Может, t2.[name] <> t1.[name] OR t2.[name] IS NULL AND t1.[name] IS NOT NULL OR t2.[name] IS NOT NULL AND t1.[name] IS NULL и быстрее отработает, но запись громоздкая. ясно красота сейчас мало интересует, именно update не ключевых полей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 10:40 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
TaPaK, Если грубо, то только вариант exists(select a, b, c intersect select d, e, а) может быть преобразован оптимизатором в обычные предикаты. Соответственно, сохранится профит от индексов. ЗЫ: Сугубо личный опыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 11:03 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
invmTaPaK, Если грубо, то только вариант exists(select a, b, c intersect select d, e, а) может быть преобразован оптимизатором в обычные предикаты. Соответственно, сохранится профит от индексов. ЗЫ: Сугубо личный опыт.А NOT EXISTS() не прокатит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 11:35 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
iap, Сравните: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 12:02 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
andreych, присмотитесь к MERGE. Он позволяет отдим запросом, в идеале даже за один проход построить полную SCD-2 логику. Т.е. обновить (если изменились) общие строки, добавить отсутствующие и удалить лишние. P.S. MERGE, к тому же, является частью ANSI SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 13:45 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 13:46 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Yuri Abeleandreych, присмотитесь к MERGE. Он позволяет отдим запросом, в идеале даже за один проход построить полную SCD-2 логику. Т.е. обновить (если изменились) общие строки, добавить отсутствующие и удалить лишние. P.S. MERGE, к тому же, является частью ANSI SQLНо не в таком полном виде, как предложил Microsoft. Кажется, там не прописан DELETE. Хотя, может, я отстал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 13:48 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
iap, WHEN NOT MATCHED BY SOURCE DELETE, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 13:55 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
iapP.S. MERGE, к тому же, является частью ANSI SQLНо не в таком полном виде, как предложил Microsoft. Кажется, там не прописан DELETE. Хотя, может, я отстал.[/quote] Да не, DELETE-то возможен и в ANSI, а вот в MSSQL добавлена возможность проверить на каком из концов отсутствует. Т.е. NOT MATCHED by SOURCE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 13:57 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Владтслав опередил :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 13:58 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовiap, WHEN NOT MATCHED BY SOURCE DELETE, например.имхо, iap говорил про стандарт, про ANSI SQL А в нём, похоже, всё пока ограничивается INSERT / UPDATE Merge (SQL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 15:15 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
court, Ну что вы, по вашей же ссылке, первая строка:авторIt was officially introduced in the SQL:2003 standard, and expanded in the SQL:2008 standard. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 15:18 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Ну да и хрен с ним. Задачу решает и чудно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 15:21 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Ennor Tiegaelcourt, Ну что вы, по вашей же ссылке, первая строка:авторIt was officially introduced in the SQL:2003 standard, and expanded in the SQL:2008 standard . Да, я тоже на это "расширено" обратил внимание, но нигде не нашел, в чем же выглядело это "расширение" :) А так как статья по ссылке представляет (я так понимаю) описание посл.версии, то видимо расширение не относилось к добавлению DELETE имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 16:31 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
courtА так как статья по ссылке представляет (я так понимаю) описание посл.версии, то видимо расширение не относилось к добавлению DELETEтем более, что ниже, говорится про реализации в разных СУБД, и там, конкретно про MS SQL сказано так Microsoft SQL Server extends with supporting guards and also with supporting Left Join via WHEN NOT MATCHED BY SOURCE clauses . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 16:34 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
с версии 2014, как минмум, MERGE работает в полном объеме. Всё, приняли и забыли P.S. Вот зря я ANSI SQL упомянул! Понесло народ совсем вдаль от темы топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 16:40 |
|
||
|
Помогите новичку с циклом
|
|||
|---|---|---|---|
|
#18+
Yuri Abeleс версии 2014, как минмум, MERGE работает в полном объеме. Всё, приняли и забыли P.S. Вот зря я ANSI SQL упомянул! Понесло народ совсем вдаль от темы топика.MERGE с первой же версии, с 2008, в МС СКЛ работает в полном объеме (INSERT / UPDATE / DELETE) И это есть гуд :) Просто интересно, почему в ANSI стандарте не сделали так же ? Реально ж удобнее когда есть сразу три "пути" синхронизации в одном операторе ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2019, 16:44 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39833872&tid=1687590]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 417ms |

| 0 / 0 |
