1

MySQLで別の列との一致に基づいて列を連結する良い方法は何ですか? 制限を追加する可能性はありますか?

私のテーブルが次のようになっているとします。

City | State | Stores
----------------------
Miami  FL      Walmart
Miami  FL      Sams
Miami  FL      Target
Tampa  FL      Sears
Tampa  FL      Walgreens

そして、私はこのようなものを取得したい:

City | State | Stores
----------------------
Miami  FL      Walmart, Sams, Target
Tampa  FL      Sears, Walgreens

また、連結する数に制限を設けることは可能ですか? 2 の制限が必要だとします。上記のサンプルでは、​​2 つのアイテムを取得した後に Target を除外します。これは可能ですか?

4

2 に答える 2

4

との両方GROUP_CONCATを使用SUBSTRING_INDEXして連結し、返す値の数を制限できます。

select city,
  state,
  substring_index(group_concat(stores SEPARATOR ', '), ', ', 2) stores
from yt                                                   -- ^ number of values to limit
group by city, state;

デモで SQL Fiddle を参照してください

于 2013-05-22T15:15:08.190 に答える
0

使用できますGROUP_CONCAT

SELECT City, State, GROUP_CONCAT(Stores SEPARATOR ', ') Stores
FROM table
GROUP BY City, State

結果

| | 都市 | 状態 | ストア |
----------------------------------------------
| | マイアミ | フロリダ | ウォルマート、サムズ、ターゲット |
| | タンパ | タンパ フロリダ | シアーズ、ウォルグリーン |

デモを見る

于 2013-05-22T15:11:35.227 に答える