2016-12-08 36 views
-3

嘗試在mysql.But中僅使用第一個值的文本字段group_concat(如果值爲'177,178'),它只取177,因爲我將它保存爲文本字段。我可以用這個字段做group_concat嗎?mysql中的group_concat文本字段

我的查詢看起來如此:

SELECT GROUP_CONCAT(abc.displayValue SEPARATOR ' ') FROM abc WHERE abc.lookupId IN ('177,178') 

回答

0

你你IN內亂放引號?

SELECT GROUP_CONCAT(abc.displayValue SEPARATOR ',') FROM abc WHERE abc.lookupId IN (177,178) 
+0

爲什麼缺少逗號會導致此問題? – Barmar

+0

逗號是默認分隔符,所以我認爲他真的想用空格代替。 – Barmar

+0

@Barmar是的,你是對的!儘管這不是必須的。 +1指出它!我編輯了答案。 – Kulasangar

0

的問題不在於GROUP_CONCAT,問題是,你的WHERE子句僅選擇一行。由於lookupId字段是一個整數,因此它將字符串'177,178'轉換爲一個整數,該整數僅爲177。您不應該在IN()列表中的值附近引用引號,這只是一個值得尋找的值。

SELECT GROUP_CONCAT(abc.displayValue SEPARATOR ' ') 
FROM abc 
WHERE abc.lookupId IN (177, 178) 

如果逗號分隔的字符串實際上是從你與加入一個表中的列來了,看到sql join tables where 1 column has comma

SELECT GROUP_CONCAT(table1.displayValue SEPARATOR ' ') 
FROM table1 
JOIN table2 ON FIND_IN_SET(table1.lookupID, table2.lookupIDs) 
WHERE ... 
+0

實際上我將這個lookupID保存爲一個varchar字段,因爲我必須在一行中存儲這兩個177,178(可能需要在單行中存儲更多值,例如未來的179,180)。因此,存儲格式'177,178'(比如'abc')。它以177,178作爲單個字符。所以如何將這個組合起來? – rekha

+0

您不應將逗號分隔的值存儲在單個字段中,您應該使用另一個表,其中每個「lookupID」位於不同的行中。但是,如果你堅持這一點,請參閱http://stackoverflow.com/questions/25611999/sql-join-tables-where-1-column-has-comma/25612053#25612053。 – Barmar