嘗試在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')
嘗試在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')
你你IN
內亂放引號?
SELECT GROUP_CONCAT(abc.displayValue SEPARATOR ',') FROM abc WHERE abc.lookupId IN (177,178)
的問題不在於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 ...
實際上我將這個lookupID保存爲一個varchar字段,因爲我必須在一行中存儲這兩個177,178(可能需要在單行中存儲更多值,例如未來的179,180)。因此,存儲格式'177,178'(比如'abc')。它以177,178作爲單個字符。所以如何將這個組合起來? – rekha
您不應將逗號分隔的值存儲在單個字段中,您應該使用另一個表,其中每個「lookupID」位於不同的行中。但是,如果你堅持這一點,請參閱http://stackoverflow.com/questions/25611999/sql-join-tables-where-1-column-has-comma/25612053#25612053。 – Barmar
爲什麼缺少逗號會導致此問題? – Barmar
逗號是默認分隔符,所以我認爲他真的想用空格代替。 – Barmar
@Barmar是的,你是對的!儘管這不是必須的。 +1指出它!我編輯了答案。 – Kulasangar