我有一个subscriptions
表,其中用户可以订阅多个类别。比方说,我在这个表中的以下数据:MySQL:将独特的列组合到自己的结果数组中
表结构和数据:
+-------------------+-----------+---------------+ | subscription_id | user_id | category_id | +-------------------+-----------+---------------+ | 1 | 40 | 123 | | 2 | 40 | 120 | | 3 | 40 | 119 | | 4 | 37 | 120 | | 5 | 37 | 119 | | 6 | 34 | 123 | +-------------------+-----------+---------------+
我试图通过user_id
写一个MySQL查询将组的结果。下面是JSON的一般说明(但输出格式不重要;本例中JSON在视觉上更容易阅读IMO)。
所需的输出:
{
40: [
{
subscription_id: 1,
category_id: 123
},
{
subscription_id: 2,
category_id: 120
},
{
subscription_id: 3,
category_id: 119
}
],
37: [
{
subscription_id: 4,
category_id: 120
},
{
subscription_id: 5,
category_id: 119
}
],
34: [
{
subscription_id: 6,
category_id: 123
}
]
}
运行查询与GROUP BY user_id
只返回唯一的行。
的两个问题:
- 经由MySQL查询上面的输出可能的,或者需要将发布查询的数据操作(即循环)?
- 如果以上输出IS可能,那么执行后查询操作会更快更有效吗? (假设有成千上万行)
你可以''category_id'和subscription_id''group_concat'。 https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat – chris85