я могу выбрать информацию для строки (ов) Я хочу обновить, используя эту инструкцию:Обновления несколько строк с максимальной датой для каждого внешнего ключа
select max(Date),F_ID from MyTable group by F_ID
F_ID является внешним ключом. Я пытаюсь обновить другое поле, где максимальная дата. Проблема в том, что может быть много строк с одним и тем же внешним ключом и той же датой. В случае, если это максимальная дата, у меня есть несколько строк, я хочу обновить их все.
Ближайший я был в состоянии получить это:
update MyTable set
Curr = 1
where (select cast(Date as varchar(20))+cast(F_ID as varchar(10)) from MyTable) in
(select cast(max(Date)as varchar(20))+cast(F_ID as varchar(10)) from MyTable group by A_PID)
Я получаю эту ошибку:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
Спасибо за помощь!
Edit: Окончательный формат запроса для обновления заявление в случае, если кто-то ищет это:
update MyTable set
Curr = 1
from MyTable t inner join
(select F_ID,max(Date) maxDate
from MyTable group by A_PID) t2
on t.A_PID = t2.A_PID and t.Date = t2.maxDate
Благодаря @Jim
Спасибо, но у меня есть одинаковые даты на FK. Я хочу обновить все строки с равной датой, если это максимальная дата. – Pat
@Pat Вы уверены, что ваши даты, в том числе время, areequeal? Btw, даст другое решение. – LINQ2Vodka
Да. Я конвертирую для другой БД. Время всегда 00: 00: 00: 000 – Pat