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_CONCATandSUBSTRING_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

结果

| 城市 | 状态 | 商店 |
-----------------------------------------
| 迈阿密 | 佛罗里达州 | 沃尔玛、Sams、Target |
| 坦帕 | 佛罗里达州 | 西尔斯,沃尔格林 |

查看演示

于 2013-05-22T15:11:35.227 回答