Basierend auf Ihrer Aktualisierung Ihrer Frage können Sie dies folgendermaßen tun
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
Ergebnis:
+------+-------+ | id | value | +------+-------+ | 1 | 1,2,3 | +------+-------+
Hier ist SQLFiddle Demo
AKTUALISIERUNG: Basierend auf Ihren Kommentaren, die Ihre Frage erneut geändert haben. Um eine begrenzte Zeichenfolge von Werten in t1
aktualisieren zu können basierend auf Werten in t2
Sie benötigen Hilfe einer Zahlentabelle, um t1.value
aufzuteilen on the fly. Sie können ganz einfach eine solche Tabelle wie diese erstellen
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
Dieses Skript erstellt eine Tabelle mit einer Zahlenfolge von 1 bis 100, die es ermöglicht, bis zu 100 getrennte Werte effektiv aufzuteilen. Wenn Sie mehr oder weniger benötigen, können Sie das Skript einfach anpassen.
Aktualisieren Sie nun t1.value
du kannst
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
Angenommen, Sie haben in t1
| ID | VALUE | |----|-------| | 1 | 1,4 |
Das Ergebnis des Updates wird sein
| ID | VALUE | |----|---------| | 1 | 1,2,3,4 |
Hier ist SQLFiddle Demo
Alles in allem sollten Sie auf lange Sicht Ihr DB-Schema überdenken und Ihre Daten normalisieren . Das wird sich sehr auszahlen, da Sie Ihre Daten normal pflegen und abfragen können.