हाय दोस्तों मेरे पास एक MySQL डेटाबेस है जिसमें कतार नामक एक टेबल है जिसमें पंक्तियों में कॉलम गायक और गीत होते हैं। मैं गायकों के ऊपर जाने के क्रम को बनाए रखने के लिए टेबल का उपयोग कर रहा हूं, वहां एक ऑटो इंक्रीमेंट आईडी है

जो मैं खोजने की कोशिश कर रहा हूं वह मेरी तालिका से पहली पंक्ति को एक नई ऑटो वृद्धि आईडी मान के साथ अंतिम पंक्ति में कॉपी करने के लिए उचित वाक्यविन्यास है और फिर पहली पंक्ति को हटा दें। जब तक मैंने इसे लिखने की कोशिश नहीं की तब तक यह इतनी चुनौती नहीं लग रही थी। किसी भी विचार का स्वागत है।

उत्तर मिलने के बाद से मैंने यह कोशिश की है .. लेकिन त्रुटि 1111 प्राप्त होती रहें

 UPDATE `queue`
 SET `id` = MAX(id) + 1;
 WHERE `id` = MIN(id);

यह भी कोशिश की है...यह इतना कठिन कैसे हो सकता है।

 Set $max = (SELECT MAX(id) + 1 FROM queue);
 Set $min = (SELECT MIN(id) FROM queue);
 UPDATE `queue`
 SET `id` =  $max
 WHERE `id` = $min;

इसलिए मैंने अधिकतम () मिनट () विचार को छोड़ दिया है जब तक कि किसी के पास प्रयोग करने योग्य उत्तर न हो और मेरे मूल विचार में चले गए और मैं बहुत करीब हूं। लेकिन मेरी समस्या यह है कि मुझे हटाने के लिए सबसे कम आईडी नहीं पता होगी क्योंकि यह केवल 1 बार होगा इसलिए मुझे इसे किसी भी तरह से MIN (आईडी) मान या चर के साथ भरना होगा। यहाँ मैं कहाँ हूँ।

  INSERT INTO queue (SELECT NULL,singer, song1 FROM queue WHERE id = 1);
  DELETE FROM queue ORDER BY id ASC LIMIT 1; 
0
Jon 7 अगस्त 2018, 02:40
Mysql php नहीं है, $ एक चर को चिह्नित नहीं करता है। @ करता है।
 – 
Shadow
7 अगस्त 2018, 08:16

2 जवाब

क्यों न केवल UPDATE पंक्ति को SET और WHERE क्लॉज का उपयोग करके अपनी id को बदलने के लिए?

UPDATE `queue`
SET `id` = 21 -- (current_highest_value + 1)
WHERE `id` = 1

इस तरह आपको एक नई पंक्ति जोड़ने और पुरानी को हटाने के बारे में चिंता करने की ज़रूरत नहीं है।

0
Obsidian Age 7 अगस्त 2018, 02:48
बहुत दिलचस्प विचार अब उस पर गौर करने जा रहा है .. उच्चतम आईडी मान प्राप्त करने के लिए शोध करने की आवश्यकता है ... टिप के लिए धन्यवाद कोशिश करेंगे। यह भी सुनिश्चित नहीं है कि इसे दूसरी बार कैसे काम करना है, जहां सबसे कम आईडी होगी 2...अनुसंधान के लिए बंद
 – 
Jon
7 अगस्त 2018, 03:06
ठीक है, बहुत अच्छा मिन () और मैक्स () फ़ंक्शन यह देखने जा रहे हैं कि क्या मैं इसे काम पर ला सकता हूं।
 – 
Jon
7 अगस्त 2018, 03:21

मुझे लगता है कि सभी चीजें ठीक हैं बस आपको डिलीट स्टेटमेंट के लिए SQL_SAFE_UPDATES = 0 अपडेट करना होगा, ताकि आप नीचे दिए गए तरीके से कोशिश कर सकें

  SET SQL_SAFE_UPDATES = 0;  
  INSERT INTO queue (SELECT NULL,singer, song1 FROM queue WHERE id = 1);
  DELETE FROM queue ORDER BY id ASC LIMIT 1;
0
Zaynul Abadin Tuhin 7 अगस्त 2018, 09:00