Обновить таблицу с помощью «Выбрать запрос» с предложением where - PullRequest
5 голосов
/ 23 сентября 2010

Я хочу добиться следующего:

Текущее состояние таблицы (my_table)

 id        totalX          totalY          totalZ               
 --------- --------------  --------------  --------------       
         9             34              334             0      
        10              6               56             0      
        11             21              251             0      
        12              3               93             0   

Результат запроса (my_table2)

select id,count(*) as total FROM my_table2 WHERE column_2 = 1 GROUP BY id

 id        total               
 --------- --------------       
         9            500      
        10            600      
        11            700      
        12            800  

Ожидаемое состояние таблицы (my_table)

 id        totalX          totalY          totalZ               
 --------- --------------  --------------  --------------       
         9             34              334             500      
        10              6               56             600      
        11             21              251             700      
        12              3               93             800    

Можно ли это сделать в ОДНОМ запросе на обновление? Я ищу Sybase ASE 12.5 на RHEL 5.0

РЕДАКТИРОВАТЬ: Я не могу найти решение для Sybase, но текущий ответ на вопрос работает на MS SQL Server ..

Ответы [ 3 ]

10 голосов
/ 23 сентября 2010
   update 
          my_table 
   set 
      my_table.totalZ = t.total 
   FROM
    my_table mt
    INNER JOIN 
       (select id,count(*) as total 
       FROM my_table2 
      WHERE column_2 = 1 GROUP BY id) t
   on mt.id  = t.id

ОБНОВЛЕНИЕ В MS SQL Server это то, что вы будете делать. ОП отметил, что в Sybase это не работает.

2 голосов
/ 23 сентября 2010

как-то так должно сработать

update my_table
set my_table.totalZ = (select count(*) from my_table2 where my_table.id = my_table2.id and my_table2.column_2 = 1);
0 голосов
/ 23 сентября 2010

Похоже, Sybase поддерживает объединения с обновлениями:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20023_1251/html/optimizer/optimizer133.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...