|
|
|
Вопрос по 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&msg=39844573&tid=1560632]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 140ms |

| 0 / 0 |
