2013-07-31 2 views
1

Привет У меня возникли проблемы в следующем запросе:Как хранить несколько значений из отборного подзапроса

Update tbl 
set somecol = somecol 
Where Key = (select key 
      from tbl 
      group by key 
      having count(*) > 1) 
    and Time = (select max(time) from tbl) 

Выше запрос отлично работает, когда есть только один ключ. Но если есть несколько ключей, чем этот запрос не работает. Как сохранить несколько значений из подзапроса select? Также колонка времени может быть кратной. Я новичок в sql. Пожалуйста, направляйте. Заранее спасибо.

ответ

3

Используйте IN предикат:

Update tbl 
set somecol = somecol 
Where Key in (select key 
      from tbl 
      group by key 
      having count(*) > 1) 
    and Time = (select max(time) from tbl) 
1

Попробуйте следующее:

Update tbl 
set somecol = somecol 
Where Key in (select key 
      from tbl 
      group by key 
      having count(*) > 1) 
    and Time in (select max(time) from tbl) 

В зависимости от требований вы можете также использовать производные таблицы.

Смежные вопросы