Ошибка означает, что в некоторых случаях одна конкретная основная запись имеет более одного ответа, подзапрос для получения даты возвращает более одной строки. Как вы, возможно, знаете, на сервере нет логики для выбора правильного ответа и обновления основной таблицы (даты могут быть разными или нет, кто знает), поэтому отображается сообщение об ошибке.
Что нужно сделать, это убедиться, что подзапрос возвращает только одну строку: точную одну строку, необходимую для выбора даты ответа в основной таблице. Если все строки ответа содержат одну и ту же дату, вы можете использовать предложение FIRST, чтобы вернуть только первую строку, как предложено @ cyberkiwi.
Но вы можете выбрать самые новые, самые старые или любые другие на основе критериев:
Все это подавит сообщение об ошибке, правильное может быть не высеяно, в зависимости от ваших потребностей:
UPDATE Master m SET m.date = (
SELECT FIRST 1 r.date FROM Reponses r WHERE r.master_id = m.id)
WHERE m.id IN (SELECT master_id FROM Responses)
UPDATE Master m SET m.date = (
SELECT MAX(r.date) FROM Reponses r WHERE r.master_id = m.id)
WHERE m.id IN (SELECT master_id FROM Responses)
UPDATE Master m SET m.date = (
SELECT MIN(r.date) FROM Reponses r WHERE r.master_id = m.id)
WHERE m.id IN (SELECT master_id FROM Responses)
UPDATE Master m SET m.date = (
SELECT r.date FROM Reponses r WHERE r.master_id = m.id AND r.accepted = 1)
WHERE m.id IN (SELECT master_id FROM Responses)