अपने प्रश्न के अपडेट के आधार पर आप इसे इस तरह कर सकते हैं
UPDATE t1 JOIN
(
SELECT id, GROUP_CONCAT(DISTINCT value ORDER BY value) value
FROM t2
GROUP BY id
) q
ON t1.id = q.id
SET t1.value = q.value
परिणाम:
+------+-------+ | id | value | +------+-------+ | 1 | 1,2,3 | +------+-------+
यह रहा SQLFiddle डेमो
अद्यतन करें: आपकी टिप्पणियों के आधार पर जिसने आपके प्रश्न को फिर से बदल दिया। t1
. में मानों की एक सीमित स्ट्रिंग को अपडेट करने में सक्षम होने के लिए t2
. में मानों के आधार पर t1.value
. को विभाजित करने के लिए आपको एक संख्या (टैली) तालिका की सहायता की आवश्यकता होगी मक्खी पर। आप आसानी से इस तरह की तालिका बना सकते हैं
CREATE TABLE tally(n INT NOT NULL PRIMARY KEY);
INSERT INTO tally (n)
SELECT a.N + b.N * 10 + 1 n
FROM
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY n
वह स्क्रिप्ट 1 से 100 तक की संख्याओं के अनुक्रम के साथ एक तालिका बनाती है जो प्रभावी रूप से 100 सीमांकित मानों को विभाजित करने की अनुमति देगी। अगर आपको कम या ज्यादा की जरूरत है तो आप आसानी से स्क्रिप्ट को एडजस्ट कर सकते हैं।
अब t1.value
को अपडेट करने के लिए आप कर सकते हैं
UPDATE t1 JOIN
(
SELECT id, GROUP_CONCAT(value ORDER BY value) value
FROM
(
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(t1.value, ',', n.n), ',', -1) value
FROM t1 CROSS JOIN tally n
WHERE n.n <= 1 + (LENGTH(t1.value) - LENGTH(REPLACE(t1.value, ',', '')))
UNION
SELECT id, value
FROM t2
) v
GROUP BY id
) q
ON t1.id = q.id
SET t1.value = q.value
मान लें कि आपके पास t1
. में है
| ID | VALUE | |----|-------| | 1 | 1,4 |
अपडेट का परिणाम होगा
| ID | VALUE | |----|---------| | 1 | 1,2,3,4 |
यह रहा SQLFiddle डेमो
यह सब लंबे समय में कहा जा रहा है आप बेहतर तरीके से अपने db स्कीमा पर पुनर्विचार करें और अपने डेटा को सामान्य करें . यह आपके डेटा को सामान्य रूप से बनाए रखने और क्वेरी करने की अनुमति देकर बड़े समय का भुगतान करेगा।