このクエリの場合
UPDATE tabex SET field1=CONCAT(tabex.a1,', ',tabex.a2,', ',tabex.a3,', ',tabex.a4,', ',tabex.a5,', ',tabex.a6,', 'tabex.a7,', ',tabex.a8,', ',tabex.a9 );
行には影響しません。唯一の説明は、テーブルが空であるということです。テーブルのすべての行を更新します。ただし、列の1つがNULLの場合、field1列もNULLになります。
これを回避するには、COALESCE()関数を使用する必要があります。この関数は、NULLではない最初のパラメーターを返します。
UPDATE tabex SET field1=CONCAT(COALESCE(tabex.a1, ''),', ',...);
補足として、なぜあなたがこれをしたいのか、私は尋ねなければなりません。列のカンマ区切り値は、ほとんどの場合悪い考えです。
そして最後に、CONCAT_WS()を使用したクエリは間違っています。関数名の_WSは「withseparator」の略であるため、最初のパラメーターはセパレーターであり、その後、関数の他のパラメーターの間に配置されます。したがって、次のように書く必要があります:
UPDATE tabex SET field1=CONCAT_WS(',', tabex.a1, tabex.a2, tabex.a3,...);
CONCAT_WS()関数のもう1つの利点は、NULL値を無視することです。 マニュアルで2つの関数の詳細を読む 。