让我解释一下我对这个问题的意思:
让我说我必须这样的表:
customers
id customer location
1 Adam UK
2 Pete US
values
id value
1 10
1 7
2 3
2 41
让我们暂时忽略那个(以及下面的查询)没有多大意义。这是一个简化的例子。
现在,如果我运行此查询
SELECT id, customer, value FROM customers INNER JOIN values GROUP BY id
我应该得到这个结果(与id不同)
id customer value
1 Adam 10
2 Pete 3
我希望能够做到的是在搜索结果列表中使用它,但是为了实际显示结果,我想做这样的事情:
Customer: Adam
Values: 10, 7
所以,基本上,虽然我需要有一个与ID不同的结果集,但我仍然想以某种方式保存GROUP BY删除的行以显示如上所示的值列表。这样做的最佳方式是什么?
答案 0 :(得分:5)
查看http://mysql.com/group_concat - 只能在MySql中使用。
更好的链接:http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_group-concat
答案 1 :(得分:0)
从技术上讲,即使MySQL允许,以下内容也不是有效的SQL:
Select customers.id, customers.customer, values.value
From customers
Inner Join values
On values.id = customers.id
Group By customers.id
SQL规范要求Select子句中的每一列都在Group By或aggregate函数中引用。但是,考虑到你在帖子后面所说的内容,我认为你想要的是GROUP_CONCAT,这是Erik(+1)首先提到的,它是MySQL特有的功能:
Select customers.customer, Group_Concat(values.value)
From customers
Inner Join values
On values.id = customers.id
Group By customers.customer