मुझे लगता है कि आप एक सहसंबद्ध उपश्रेणी चाहते हैं:
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. का मूल्यांकन किए बिना निष्पादित हो सकता है ।