|
Вопрос по 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:39 |
|
Вопрос по MERGE
|
|||
---|---|---|---|
#18+
Polesov, тем что у тебя не коррелированный подзапрос возвращающий синглетон, для таких случаев Firebird считает что это инвариант и не перевычисляет его ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 12:47 |
|
Вопрос по MERGE
|
|||
---|---|---|---|
#18+
Polesov, это можно и без MERGE проверить ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 12:48 |
|
Вопрос по MERGE
|
|||
---|---|---|---|
#18+
Симонов Денис, спасибо. P.S. просто MERGE выдран из контекста. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:19 |
|
Вопрос по MERGE
|
|||
---|---|---|---|
#18+
Симонов Денисне коррелированный подзапрос возвращающий синглетон, для таких случаев Firebird считает что это инвариант Выполним запрос: Код: sql 1. 2. 3. 4.
Результат: Код: powershell 1. 2. 3. 4.
В данном случае, если бы подзапрос считался инвариантом, то значение INC везде было бы равно 1. Получается, что подзапрос в using MERGE и подзапрос в select - разные вещи? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:24 |
|
Вопрос по MERGE
|
|||
---|---|---|---|
#18+
Polesov, а ты полный аналог MERGE напиши. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 16:31 |
|
Вопрос по MERGE
|
|||
---|---|---|---|
#18+
Симонов Дениса ты полный аналог MERGE напиши. Понятно, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 16:39 |
|
Вопрос по MERGE
|
|||
---|---|---|---|
#18+
Симонов Денисне коррелированный подзапрос возвращающий синглетон, для таких случаев Firebird считает что это инвариант Если хранимую процедуру формально скоррелировать (передача фиктивного параметра): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
то с подзапросом все работает правильно: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 16:46 |
|
|
start [/forum/topic.php?fid=40&fpage=21&tid=1560632]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 142ms |
0 / 0 |