मुझे लगता है कि आप एक सहसंबद्ध उपश्रेणी चाहते हैं:
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
);
मैंने अन्य चीजों का एक गुच्छा बदला/ठीक किया:
- तालिका उपनाम क्वेरी को लिखने और पढ़ने में आसान बनाते हैं।
- बैकटिक्स क्वेरी को लिखने और पढ़ने में कठिन बनाते हैं।
- केवल अद्यतन की जा रही तालिका की शर्तें बाहरी
WHERE
. में होनी चाहिए , आंतरिक नहींWHERE
। - वेरिएबल को
EXISTS
में सेट करना सबक्वायरी बस समझ में नहीं आता है।EXISTS
परीक्षण करता है कि क्या पंक्तियाँ मौजूद। तार्किक रूप से, यह कभी भीSELECT
. का मूल्यांकन किए बिना निष्पादित हो सकता है ।