2017-06-15 26 views
0

我可能失去了一些東西簡單忽略不計,但似乎我選擇了CONCAT_WS分隔似乎並不奏效更復雜的查詢內部時。選擇分離器由CONCAT_WS(MySQL的/ MariaDB的)

首先我測試CONCAT_WS本身:

SELECT CONCAT_WS('/', 'a', 'b', 'c') AS `test`; 

其中返回:

test 
a/b/c 

然後我試了GROUP_CONCAT裏面,我打算用:

SELECT GROUP_CONCAT(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 ; 

其中返回正確的結果,但用逗號,而不是/ 例如,以下是結果的一行:

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的一個Debian服務器上的phpMyAdmin的Web界面(的libmysql - 53年5月5日)。

+0

_Your查詢有problem_。您正在選擇不出現在「GROUP BY」中的非聚合列。請用您希望的邏輯更新您的問題,以便爲每個條形碼選擇一條記錄。 –

+0

是@TimBiegeleisen在幾乎任何其他SQL你需要將它們全部列出。但是在這個特定點上,mysql有點鬆動。所以沒有「......它不包含在聚合函數或GROUP BY子句」錯誤中。 Mysql是錯誤的,但它並不在乎。 XD – monotonehell

回答

1

這可能是該GROUP_CONCAT也有一個分隔符。

SELECT GROUP_CONCAT(CONCAT_WS('/',`Description`)) AS `Contents` 

將導致,分離

這個位置:

GROUP_CONCAT(CONCAT_WS('/',`Description`) SEPARATOR '/') 

將使該GROUP_CONCAT/分離

+0

就是這樣。我在'GROUP_CONCAT'中添加了'SEPARATOR' - '',並在兩者之間用短劃線返回了文本。我想我只是想到,分隔符應該適用於concat而不是組羣...好吧,我只是混淆了自己。我相信你是對的,我只需要再想一想。謝謝@Arion! – monotonehell