2012-05-23 10 views
5

मैं इस के समान एक मेज है में OFFSET:LIMIT में ऑफसेट या एक अद्यतन SQL क्वेरी

| 0 | X | 
| 1 | X | 
| 2 | X | 
| 3 | Y | 
| 4 | Y | 
| 5 | X | 
| 6 | X | 
| 7 | Y | 
| 8 | Y | 
| 9 | X | 

मैं X1 साथ X के पहले 2 आवृत्तियां प्रतिस्थापित करना चाहते हैं, और उसके बाद 4 ताकि X2 के साथ अगले घटनाओं जिसके परिणामस्वरूप तालिका इस प्रकार है:

| 0 | X1 | 
| 1 | X1 | 
| 2 | X2 | 
| 3 | Y | 
| 4 | Y | 
| 5 | X2 | 
| 6 | X2 | 
| 7 | Y | 
| 8 | Y | 
| 9 | X2 | 

प्रश्न में टेबल के पाठ्यक्रम बहुत बड़ा है और घटनाओं की संख्या इस प्रकार होगा उच्च भी तो पुस्तिका संपादन एक समाधान नहीं है।

मैं इस तरह कुछ करने के लिए करना चाहते हैं:

UPDATE table SET column = 'X' WHERE column = 'X2' LIMIT 90, 88

लेकिन दुर्भाग्य से MySQL अद्यतन प्रश्नों में OFFSET का समर्थन करने के लिए ... वहाँ यह करने के लिए कोई तरीका है प्रतीत नहीं होता?

उत्तर

3

इस प्रयास करें:

UPDATE table SET column = 'X1' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 2) as u);

और फिर

UPDATE table SET column = 'X2' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 4) as u);

7

मैं नहीं जानता कि क्या आप आईडी तालिका में है या नहीं उपलब्ध दायर है, लेकिन आप कहां आईडी उपयोग कर सकते हैं 88 और 90 के बीच, MySQL अद्यतन क्वेरी में ऑफसेट का समर्थन नहीं करता है, लेकिन आप का उपयोग करके सीमित कर सकते हैं कमांड

संबंधित मुद्दे