2016-12-08 15 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句は1行のみ選択していることです。 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

実際には、私は両方の177,178を単一の行に格納する必要があるので、このlookupIDをvarcharフィールドとして保存しています(将来は179,180などの単一の行にさらに値を格納する必要があります)。フォーマット '177,178'( 'abc'のような)。これはこの177,178を単一の文字として扱います。どのようにしてこれをグループ化するのですか? – rekha

+0

カンマ区切りの値を1つのフィールドに格納しないでください。それぞれの 'lookupID'が別の行にある別のテーブルを使用する必要があります。しかし、あなたがこれについていれば、http://stackoverflow.com/questions/25611999/sql-join-tables-where-1-column-has-comma/25612053#25612053を参照してください。 – Barmar