Op basis van uw update van uw vraag kunt u het als volgt doen
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
Resultaat:
+------+-------+ | id | value | +------+-------+ | 1 | 1,2,3 | +------+-------+
Hier is SQLFiddle demo
UPDATE: Op basis van uw opmerkingen die uw vraag opnieuw hebben gewijzigd. Om een begrensde reeks waarden in t1
te kunnen bijwerken gebaseerd op waarden in t2
je hebt hulp nodig van een getallentabel om t1.value
te splitsen on the fly.Je kunt zo'n tabel gemakkelijk als deze maken
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
Dat script maakt een tabel met een reeks getallen van 1 tot 100 waarmee u tot 100 gescheiden waarden effectief kunt splitsen. Als je meer of minder nodig hebt, kun je het script gemakkelijk aanpassen.
Nu t1.value
updaten je kunt doen
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
Ervan uitgaande dat u in t1
| ID | VALUE | |----|-------| | 1 | 1,4 |
resultaat van de update zal zijn
| ID | VALUE | |----|---------| | 1 | 1,2,3,4 |
Hier is SQLFiddle demo
Dat alles gezegd zijnde, op de lange termijn je kunt maar beter je db-schema heroverwegen en je gegevens normaliseren . Dat zal zijn vruchten afwerpen door uw gegevens normaal te laten onderhouden en opvragen.