Berdasarkan pembaruan Anda untuk pertanyaan Anda, Anda dapat melakukannya seperti ini
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
Hasil:
+------+-------+ | id | value | +------+-------+ | 1 | 1,2,3 | +------+-------+
Ini SQLFiddle demo
PERBARUI: Berdasarkan komentar Anda yang mengubah pertanyaan Anda lagi. Untuk dapat memperbarui string nilai yang dibatasi di t1
berdasarkan nilai dalam t2
Anda memerlukan bantuan tabel angka (penghitungan) untuk membagi t1.value
dengan cepat. Anda dapat dengan mudah membuat tabel seperti ini
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
Skrip itu membuat tabel dengan urutan angka dari 1 hingga 100 yang akan memungkinkan untuk secara efektif membagi hingga 100 nilai yang dibatasi. Jika Anda membutuhkan lebih atau kurang, Anda dapat dengan mudah menyesuaikan skrip.
Sekarang untuk memperbarui t1.value
kamu bisa
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
Dengan asumsi Anda memiliki t1
| ID | VALUE | |----|-------| | 1 | 1,4 |
hasil pembaruan adalah
| ID | VALUE | |----|---------| | 1 | 1,2,3,4 |
Ini SQLFiddle demo
Itu semua dikatakan dalam jangka panjang sebaiknya Anda mempertimbangkan kembali skema db Anda dan menormalkan data Anda . Itu akan menghasilkan banyak waktu dengan mengizinkan pemeliharaan dan kueri data Anda secara normal.