Mysql SQL join和count将其集合在一起
我是SQL的初学者,在同时加入和计数时遇到了一些麻烦。 首先让我解释一下我的两张桌子。 我有以下资料:Mysql SQL join和count将其集合在一起,mysql,sql,join,Mysql,Sql,Join,我是SQL的初学者,在同时加入和计数时遇到了一些麻烦。 首先让我解释一下我的两张桌子。 我有以下资料: Table: AnalysePageview id title session more ----------------------------------------------------- 1 a 10 0 2
Table: AnalysePageview
id title session more
-----------------------------------------------------
1 a 10 0
2 b 20 1
3 c 30 1
4 d 40 1
5 e 50 1
6 f 60 0
Table: AnalyseEvent
id name session more
-----------------------------------------------------
1 a 10 0
2 b 10 1
3 c 10 1
4 d 20 1
我想把这两个加在一起,加一行如下:
New Table:
id name session counts (out off AnalyseEvent)
-----------------------------------------------------
1 a 10 3
2 b 20 1
3 c 30 0
4 d 40 0
5 e 50 0
6 f 60 0
我刚试过这个:
SELECT *,
COUNT( AnalyseEvent.session ) AS totalViews
FROM AnalysePageview
LEFT JOIN AnalyseEvent ON AnalysePageview.session = AnalyseEvent.session
提前谢谢你的帮助。(我的答案是一个小的初学者解释)你需要一个
小组成员
:
SELECT apv.id, apv.name, apv.session, COUNT( ae.session ) AS totalViews
FROM AnalysePageview apv LEFT JOIN
AnalyseEvent ae
ON apv.session = ae.session
GROUP BY apv.id, apv.name, apv.session;
我还添加了表别名,以使查询更易于编写和读取。您需要一个
分组依据:
SELECT apv.id, apv.name, apv.session, COUNT( ae.session ) AS totalViews
FROM AnalysePageview apv LEFT JOIN
AnalyseEvent ae
ON apv.session = ae.session
GROUP BY apv.id, apv.name, apv.session;
我还添加了表别名,以使查询更易于编写和读取。您需要使用group by。比如:
select apw.id, apw.title, apw.session, count(1)
from AnalysePageview apw
left join AnalyseEvent ae
on apw.session = ae.session
group by apw.id, apw.title, apw.session
您需要使用分组方式。比如:
select apw.id, apw.title, apw.session, count(1)
from AnalysePageview apw
left join AnalyseEvent ae
on apw.session = ae.session
group by apw.id, apw.title, apw.session
在你的问题中,你还应该说明你的尝试有什么问题。只是让人们更容易发现问题并提供帮助。在你的问题中,你还应该说明你的尝试有什么问题。只是让人们更容易发现问题并提供帮助。为什么要对所有的问题进行分组(apv.id、apv.name、apv.session)难道apv.session不足够吗?@汉堡包:因为不清楚如何处理n
列apv.name
中的所有不同值(例如)对于相同的apv.session
,如果仅按此列分组,则应将聚合函数应用于SELECT
子句中包含但不包含在groupby
子句中的字段,或者将其放在groupby
子句中,这当然取决于所需的结果,因为在一般情况下,上述两种方法会有所不同。为什么要对所有(apv.id、apv.name、apv.session)进行分组不是apv.session不够吗?@汉堡包:因为不清楚如何处理n
列apv.name
中的所有不同值(例如)对于相同的apv.session
,如果仅按此列分组,则应将聚合函数应用于SELECT
子句中包含但不包含在groupby
子句中的字段,或者将其放在groupby
子句中,这当然取决于所需的结果,因为在一般情况下,上述两种方法是不同的。这有点复杂。SQL92要求使用完整的GROUPBY,SQL99放松了这一点,并要求select中的所有列在功能上依赖于GROUPBY子句。如果AIK all DBMS使用更严格的SQL92定义,mysql将完全忽略它并生成随机结果,除非覆盖默认设置。如果是tat,mysql也使用更严格的定义。如果您知道其他列是apw.session的f.d.,您可以在其他列上应用聚合函数,如max。这有点复杂。SQL92要求使用完整的GROUPBY,SQL99放松了这一点,并要求select中的所有列在功能上依赖于GROUPBY子句。如果AIK all DBMS使用更严格的SQL92定义,mysql将完全忽略它并生成随机结果,除非覆盖默认设置。如果是tat,mysql也使用更严格的定义。如果您知道其他列是apw.session的f.d.,则可以在其他列上应用聚合函数,如max。