Мой SQL-запрос
UPDATE Task SET Done = 1 WHERE (ID = (SELECT ID FROM User WHERE UserName = @UserName)
Я попытался и получил ошибку:
Подзапрос вернул более 1 значения.Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.Оператор был прерван.
Есть ли какой-нибудь возможный способ сделать это (например, цикл for)?Спасибо
Как идентификатор строки будет равен более чем одному значению?
Это не имеет смысла, поэтому написание такого запроса невозможно.
Проверка наличия идентификатора в наборе имеет смысл, хотя ...
...WHERE ID IN (SELECT ID...
Вы можете использовать оператор IN.
IN
WHERE ID IN (SELECT ID FROM User WHERE UserName = @UserName)
ОБНОВЛЕНИЕ Задачи УСТАНОВЛЕНО = 1 ГДЕ ИДЕНТИФИКАТОР (ВЫБЕРИТЕ ИДЕНТИФИКАТОР ОТ ГДЕ ГДЕ UserName = @UserName)
Как насчет следующего. Вы можете использовать простые объединения так же, как в инструкциях SELECT:
UPDATE Task t, User u SET t.Done = 1 WHERE t.ID = u.ID AND u.UserName = @UserName