Creo que quieres una subconsulta correlacionada:
UPDATE ordersperformers op
SET op.Status = 1
WHERE op.Status = 0 AND
op.Orders_Id = @v_order_id AND
op.Users_Id = @v_user_id AND
EXISTS (SELECT 1
FROM orders o
WHERE o.id = op.Orders_Id AND
NOW() <= DATE_SUB(o.DeliveryDate, INTERVAL 2 HOUR) AND
o.Status = 0
);
Cambié/arreglé un montón de otras cosas:
- Los alias de tabla hacen que la consulta sea más fácil de escribir y leer.
- Los acentos graves hacen que la consulta sea más difícil de escribir y leer.
- Las condiciones solo en la tabla que se está actualizando deben estar en el exterior
WHERE
, no elWHERE
interno . - Establecer variables en un
EXISTS
subconsulta simplemente no tiene sentido.EXISTS
comprueba si filas existir. Lógicamente, podría ejecutarse sin siquiera evaluar elSELECT
.