У меня следующий запрос ОБНОВЛЕНИЯ:
UPDATE cl INNER JOIN bb ON cl.r_si = bb.si
SET cl.s_si = (SELECT si FROM bb AS y
WHERE y.si = bb.si+1
AND
(y.p >=bb.p*(1+(bb.imax+y.dmax-((bb.imax-bb.dmax)-((bb.iminn+bb.dminn)-bb.rminn)))/100)
OR
y.p<=bb.p*(1+(bb.imin+y.dmin+((bb.imax-bb.dmax)-((bb.iminn+bb.dminn)-bb.rminn)))/100)))
WHERE (((cl.s_si) is null));
Возвращает сообщение «Операция должна использовать обновляемый запрос»
Это тот же запрос, который сформулирован как SELECT вместо ОБНОВЛЕНИЯ:
SELECT
(SELECT si FROM bb AS y
WHERE y.si = bb.si+1
AND (y.p>=bb.p*(1+(bb.imax+y.dmax-((bb.imax-bb.dmax)-((bb.iminn+bb.dminn)-bb.rminn)))/100)
OR
y.p<=bb.p*(1+(bb.imin+y.dmin+((bb.imax-bb.dmax)-((bb.iminn+bb.dminn)-bb.rminn)))/100))) AS s_si
FROM cl INNER JOIN bb ON cl.r_si = bb.si;
Запрос работает в формулировке SELECT. Что я должен изменить в запросе UPDATE, чтобы избежать этого сообщения об ошибке? Необходимо обновить таблицу cl, а не создавать новую.