
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.08.2019, 12:39
|
|||
|---|---|---|---|
Вопрос по MERGE |
|||
|
#18+
Привет всем. FB 2.5.9 Создадим и заполним таблицу: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Данные в таблице T: Код: powershell 1. 2. 3. 4. Создадим хранимую процедуру: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Задача состоит в том, что бы в таблице T заполнить поле INC монотонно возрастающими значениями. Используем MERGE: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Результат: Код: powershell 1. 2. 3. 4. Заменим в MERGE left join на подзапрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Результат (неверный): Код: powershell 1. 2. 3. 4. Чем использование в MERGE подзапроса отличается от left join? С уважением, Polesov. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2019, 12:47
|
|||
|---|---|---|---|
|
|||
Вопрос по MERGE |
|||
|
#18+
Polesov, тем что у тебя не коррелированный подзапрос возвращающий синглетон, для таких случаев Firebird считает что это инвариант и не перевычисляет его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2019, 12:48
|
|||
|---|---|---|---|
|
|||
Вопрос по MERGE |
|||
|
#18+
Polesov, это можно и без MERGE проверить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2019, 13:19
|
|||
|---|---|---|---|
Вопрос по MERGE |
|||
|
#18+
Симонов Денис, спасибо. P.S. просто MERGE выдран из контекста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2019, 13:24
|
|||
|---|---|---|---|
Вопрос по MERGE |
|||
|
#18+
Симонов Денисне коррелированный подзапрос возвращающий синглетон, для таких случаев Firebird считает что это инвариант Выполним запрос: Код: sql 1. 2. 3. 4. Результат: Код: powershell 1. 2. 3. 4. В данном случае, если бы подзапрос считался инвариантом, то значение INC везде было бы равно 1. Получается, что подзапрос в using MERGE и подзапрос в select - разные вещи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2019, 16:31
|
|||
|---|---|---|---|
|
|||
Вопрос по MERGE |
|||
|
#18+
Polesov, а ты полный аналог MERGE напиши. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2019, 16:39
|
|||
|---|---|---|---|
Вопрос по MERGE |
|||
|
#18+
Симонов Дениса ты полный аналог MERGE напиши. Понятно, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2019, 16:46
|
|||
|---|---|---|---|
Вопрос по MERGE |
|||
|
#18+
Симонов Денисне коррелированный подзапрос возвращающий синглетон, для таких случаев Firebird считает что это инвариант Если хранимую процедуру формально скоррелировать (передача фиктивного параметра): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. то с подзапросом все работает правильно: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1560632]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 400ms |

| 0 / 0 |
