2012-03-06 11 views
242

अद्यतन करते समय भी शामिल हो मेरे पास निम्न क्वेरी है जो काम नहीं करती है। मैं क्या गलत कर रहा हूं? क्या यह भी संभव है?SQL सर्वर -

UPDATE ProductReviews AS R 
    INNER JOIN products AS P 
     ON R.pid = P.id 
SET R.status = '0' 
WHERE R.id = '17190' 
    AND P.shopkeeper = '89137' 
+0

अद्यतन dbo.ProductReviews के रूप में आर सेट R.status = '0' अंदरूनी dbo.products पी रूप में शामिल होने R.pid पर = पी.आईडी जहां आर.आईडी = '171 9 0' और पी। दुकानकीपर = '89137'; – Hassan

+0

यह डुप्लिकेट नहीं है क्योंकि वह किसी अन्य तालिका से एक तालिका को अपडेट करने का प्रयास नहीं कर रहा है। वह केवल उस खंड को लागू करने के लिए शामिल हो रहा है। – nuander

उत्तर

539
UPDATE R 
SET R.status = '0' 
FROM dbo.ProductReviews AS R 
INNER JOIN dbo.products AS P 
     ON R.pid = P.id 
WHERE R.id = '17190' 
    AND P.shopkeeper = '89137'; 
+0

क्या आप कृपया समझा सकते हैं कि क्यों सिंटैक्स एक जैसे अद्यतन सेट सेट गलत है, लेकिन यह कहां से अपरिपक्व सेट के साथ काम करता है? क्या यह mysql के संस्करण पर निर्भर करता है? – Farside

+1

@ इस वाक्यविन्यास को फॉरसाइड SQL सर्वर के लिए है। क्षमा करें, किसी और को MySQL वाक्यविन्यास के साथ आपकी मदद करनी होगी। –

+0

बहुत बहुत धन्यवाद –

42

यह करना चाहिए:

UPDATE ProductReviews 
SET ProductReviews.status = '0' 
FROM ProductReviews 
     INNER JOIN products 
     ON ProductReviews.pid = products.id 
WHERE ProductReviews.id = '17190' 
     AND products.shopkeeper = '89137' 
+0

यह मुझे 'ERROR: तालिका नाम "उत्पाद समीक्षा" postgresql –

+1

में "एक से अधिक बार निर्दिष्ट किया गया है" उत्पाद प्रस्तुतियां AS pr' से 'SER स्थिति =' 0'' 'के बजाय' ProductReviews.status = '0''' के बजाय इसे ठीक किया गया है। –

+2

@ जोहान संताना इस प्रश्न को एसक्यूएल सर्वर टैग किया गया था - कोई गारंटी नहीं कि यह अन्य डीबीएमएस सिस्टम पर काम करेगी। – Bridge