シンプルなものが見つからない場合がありますが、より複雑なクエリの中ではCONCAT_WS
のセパレータが動作していないようです。CONCAT_WS(mysql/mariadb)で無視されるセパレータの選択
まず私は、それ自体でCONCAT_WSをテストした:
test
a/b/c
をそれから私は私が使用することを意図しGROUP_CONCAT
の内側にそれを試してみました:
SELECT GROUP_CONCAT(CONCAT_WS('/', 'a', 'b', 'c')) AS `test`;
返さ
SELECT CONCAT_WS('/', 'a', 'b', 'c') AS `test`;
:
test
a/b/c
オーケーすべての良いので、私はライブデータの私の適切なクエリでそれを試してみました:
SELECT `Box Barcode`,`Title`,`Start Date`,`End Date`,`Offsite Indicator`,`MIA`,
GROUP_CONCAT(CONCAT_WS('/',`Description`)) AS `Contents`
FROM `boxes`
GROUP BY `Box Barcode` ORDER BY `Box Barcode` ASC ;
正しい結果が返され、たとえば、代わりに/
のカンマを除いて、ここでの結果の1行があります:
Box Barcode Title Start Date End Date Offsite Indicator MIA Contents
C5500501127 PPS AMEX 30/06/2002 30/06/2002 TRUE FALSE PPS AMEX,PPS AMEX,PPS DINERS,PPS DINERS,PPS LIABILITIES,PPS PROPERTY PLAN AND EQUIPMENT,PPS ASSETS
数時間のグーグルが手伝っていません。私がどこに間違っているのか誰でも知っていますか?これは、MariaDB(libmysql - 5.5.53)を実行しているDebianサーバ上のPhpMyAdminウェブインタフェース経由です。
_Yourクエリがproblem_を持っているでしょう。 GROUP BYに表示されない非集計カラムを選択しています。バーコードごとに1つのレコードを選択するために必要なロジックで質問を更新してください。 –
はい@TimBiegeleisenは、それらをすべてリストする必要がある他のほぼすべてのSQLにあります。しかし、mysqlはその特定の点について少し緩いです。したがって、「集計関数またはGROUP BY句には含まれていません」というエラーはありません。 MySQLは間違っていますが、気にしません。 XD – monotonehell