SQL:Concat一个有限制的列?

时间:2013-05-22 15:09:59

标签: mysql sql group-concat

基于与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。这可能吗?

2 个答案:

答案 0 :(得分:3)

您可以同时使用GROUP_CONCATSUBSTRING_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 with Demo

答案 1 :(得分:0)

您可以使用GROUP_CONCAT

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

<强>结果

|  CITY | STATE |                STORES |
-----------------------------------------
| Miami |    FL | Walmart, Sams, Target |
| Tampa |    FL |     Sears, Walgreens  |

See a demo