|
Update по условию с соединением.
|
|||
---|---|---|---|
#18+
Как правильно написать update для таблицы, где и список обновляемых значений и новые значения определяются через соединение с групповой операцией? На MS SQL я бы написал что-нибудь вроде update M set M.CNT=M.CNT-T.DEC from MASTER M join (select CHILD.MASTERID, count(*) DEC from CHILD where ... group by CHILD.MASTERID ) T on T.MASTERID=M.ID В DB2, как я понимаю, синаксиса update ... from нет. Как подобный update написать правильно и эффективно? Писать что-то вроде UPDATE MASTER M set M.CNT=M.CNT-(select count(*) from CHILD where MASTERID=M.ID) where MASTER.ID from (select distinct CHILD.MASTERID where ... ) как-то не хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2005, 19:31 |
|
Update по условию с соединением.
|
|||
---|---|---|---|
#18+
Прошу прощения, не Код: plaintext
Код: plaintext
Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2005, 19:33 |
|
Update по условию с соединением.
|
|||
---|---|---|---|
#18+
CREATE TABLE T(pk INT, c1 INT); CREATE TABLE S(pk INT, c1 INT); Standard pre SQL4 UPDATE T SET c1 = (SELECT c1 FROM S WHERE S.pk = T.pk) WHERE pk IN (SELECT pk FROM S); IDS/SQL Server UPDATE T SET c2 = S.c1 FROM T, S WHERE T.pk = S.pk; SQL4 Merge MERGE INTO T USING S ON T.pk = S.pk WHEN MATCHED THEN UPDATE SET c1 = S.c1; Используй последнее ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2005, 08:38 |
|
|
start [/forum/topic.php?fid=43&msg=32964484&tid=1605961]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 296ms |
total: | 413ms |
0 / 0 |