|
|
|
скрытые отличия 7 и 8 или таки RTFM?
|
|||
|---|---|---|---|
|
#18+
Добрый день! есть запрос: set nocount on begin tran select Id=1,Value=100 into #q union all select 2,200 union all select 3,300 select * from #q update #q set #q.value=#q.value+t.value from (select Id=1,Value=100 union all select 1,200 union all select 1,300 union all select 1,400) t where #q.id=t.id select * from #q rollback tran на 7 результат такой: Id Value ----------- ----------- 1 100 2 200 3 300 Id Value ----------- ----------- 1 1100<<<<<<<<< 2 200 3 300 а на 8 такой: Id Value ----------- ----------- 1 100 2 200 3 300 Id Value ----------- ----------- 1 500<<<<<<<<<<<<<<<<<<< 2 200 3 300 где можно о таком прочитать? или учиться пользоваться поиском:-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2002, 17:48:47 |
|
||
|
скрытые отличия 7 и 8 или таки RTFM?
|
|||
|---|---|---|---|
|
#18+
У меня получается несколько другой результат id value ----------- ----------- 1 100 2 200 3 300 id value ----------- ----------- 1 500 <<<<<<<<< 2 200 3 300 Но суть не в этом. Вы же сами создаёте неопределённую ситуацию и не исключено что даже один и тот же сервер будет выдавать в зависимости от каких-то своих соображений (скорее всего от физического расположения записей в таблице) разные результаты. А что Вы собственно хотели получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2002, 18:51:17 |
|
||
|
скрытые отличия 7 и 8 или таки RTFM?
|
|||
|---|---|---|---|
|
#18+
К сожалению, под рукой нет BOL от версии 7.0, так что привожу только цитату из BOL 2000 (Update): Результаты Update неразрешимы в случае, если присутствует оператор From, не описанный таким образом, чтобы только одно значение было доступным для каждой обновляемой колонки (другими словами, если выражение Update недетерминировано). Например, для выражения, Update, данного в приведенном скрипте, обе строки в таблице s отвечает условиям оператора From в выражении Update, но неизвестно, какую именно строку из таблицы s использовать для обновления строки таблицы t . Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Что интересно, приведенный в BOL пример работает одинаково на обоих версиях (7.0 и 2000), и разница между ними проявляется только в случае замены джойна с таблицей s в операторе From на подзапрос, состоящий из операторов Select с константами, объединенных с помощью UNION или UNION ALL. В случае 7.0 суммирование происходит с полем из всех строк, в случае 2000 - только с одной. Интересное поведение! Спасибо за наводку. С уважением, Александр Степанов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2002, 19:06:51 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1822155]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 356ms |

| 0 / 0 |
