Mysql 如何按列值分组?

Mysql 如何按列值分组?,mysql,sql,Mysql,Sql,假设我有这两张桌子 公司 CompanyId Name State Country 追踪 Id CompanyId Activity hitDate 现在我可以得到一些这样的数据 Total Count - 2 State - AK Country - USA Activity - 'First Page, Second Page' Total Count - 1 State - Tx Country - USA Activity - 'First Page' 公司表 1 Compa

假设我有这两张桌子

公司

CompanyId 
Name
State
Country
追踪

Id
CompanyId
Activity
hitDate
现在我可以得到一些这样的数据

Total Count - 2
State - AK 
Country - USA
Activity - 'First Page, Second Page'

Total Count - 1
State - Tx
Country - USA
Activity - 'First Page'
公司表

1 Company1 AK USA
2 Company2 TX USA
跟踪表

1 1 'First Page'  2018-01-01
2 1 'Second Page' 2018-01-01
3 2 'First Page'  2018-01-01
现在我想按州和国家将这些表连接在一起

 SELECT 
      Count(*) as TotalCount, 
      company.State as State, 
      company.Country as Country, 
      tracking.Activity as Activity
 FROM tracking
 INNER JOIN companies 
    ON tracking.CompanyId=company.CompanyId 
   AND tracking.Activity IN ('First Page', 'Second Page') 
   AND companies.Country = 'USA'  
   AND DATE(tracking.dDateTime) BETWEEN '2018-02-27' AND '2018-02-28'
 GROUP BY  companies.State, companies.Country
 ORDER BY companies.State 
所以我写了一个像上面这样的查询,结果如下

Total Count - 1
State - AK 
Country - USA
Activity - 'First Page'

Total Count - 1
State - AK 
Country - USA
Activity - 'Second Page'

Total Count - 1
State - Tx
Country - USA
Activity - 'First Page'
但是我想得到这样的结果

Total Count - 2
State - AK 
Country - USA
Activity - 'First Page, Second Page'

Total Count - 1
State - Tx
Country - USA
Activity - 'First Page'
我需要某种子查询来实现这一点吗?

您正在寻找:

您还可以指定活动内的顺序和分隔符:

GROUP_CONCAT(tracking.Activity ORDER BY tracking.Activity SEPARATOR ', ')

通常按所选列进行分组,但作为设置函数参数的列除外。group+order=lost Cause您的查询有错误:
公司
公司
不同。此外,您查询中的日期条件将排除您的样本数据。请查看您的查询跟踪的第二个组有错误。活动而不是公司。国家/地区检查itI尝试了此操作,但未按我的要求加入计数。它只是用逗号分隔的值重复了活动名称,但都是相同的活动。您应该再试一次,group_concat会给出您所描述的结果,您可以发布整个查询。我运行它,得到的结果只有in语句中的第一个子句。从来没有人寻找group_concat,但他们有时会在despair@trincot-好的,我又累了,现在我确实看到它在工作,我必须在组中添加一个独特的元素,并看到它实际上是在对所有内容进行分组。