Saat kueri ini
UPDATE tabex SET field1=CONCAT(tabex.a1,', ',tabex.a2,', ',tabex.a3,', ',tabex.a4,', ',tabex.a5,', ',tabex.a6,', 'tabex.a7,', ',tabex.a8,', ',tabex.a9 );
tidak mempengaruhi baris, satu-satunya penjelasan adalah, bahwa tabel kosong. Itu akan memperbarui setiap baris dalam tabel. Tetapi jika salah satu kolom adalah NULL, kolom field1 Anda juga akan menjadi NULL.
Untuk menghindarinya, Anda harus menggunakan fungsi COALESCE(). Fungsi ini mengembalikan parameter pertama yang bukan NULL.
UPDATE tabex SET field1=CONCAT(COALESCE(tabex.a1, ''),', ',...);
Sebagai tambahan, saya harus bertanya, mengapa Anda ingin melakukan ini. Nilai yang dipisahkan koma dalam kolom seringkali merupakan ide yang buruk.
Dan akhirnya, permintaan Anda menggunakan CONCAT_WS() salah. _WS pada nama fungsi adalah kependekan dari "with separator", jadi parameter pertama adalah pemisah yang kemudian ditempatkan di antara parameter fungsi lainnya. Jadi Anda harus menulisnya seperti ini:
UPDATE tabex SET field1=CONCAT_WS(',', tabex.a1, tabex.a2, tabex.a3,...);
Keuntungan lain dari fungsi CONCAT_WS() adalah, ia mengabaikan nilai NULL. Baca lebih lanjut tentang dua fungsi di manual .