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-好的,我又累了,现在我确实看到它在工作,我必须在组中添加一个独特的元素,并看到它实际上是在对所有内容进行分组。