【发布时间】:2020-04-19 04:47:00
【问题描述】:
我有两个表事件和会话,它们如下所示
events
id sid
1 10
2 10
3 20
4 20
6 ter4
7 576
第二张桌子
sessions
id sid
1 10
2 10
3 20
4 20
6 e21
7 b34
这是我希望从上表中看到的结果,预期结果
Total_sessions Total_equal_sessions
7 4
现在当我运行以下查询时
SELECT sessions.sid, COUNT(*) AS Total_sessions, COUNT( sessions.sid ) AS Total_equal_sessions
FROM events RIGHT JOIN sessions ON events.sid = sessions.sid
我得到以下结果
Total_sessions Total_equal_sessions
7 7
我需要做什么才能得到我想要的?
【问题讨论】:
-
请解释这些值是如何计算的。特别是,您如何获得 7 个会话?
-
COUNT(DISTINCT ...)。你现在拥有的COUNT( sessions.sid )相当于COUNT(*) -
@gordon 你是什么意思我想我已经在我的问题中解释了?
-
顺便说一句,RIGHT JOIN 应该产生 10 行,而不是 7 行。
sids 是重复的,所以所有的组合都会出现在结果中。这意味着,即使COUNT(*)也不会是 7 -
@user9964622 发布正确的测试数据和期望的结果,并解释它的来源。现在,您要求人们从头开始创建表格,并尝试从与您所要求的数据不匹配的数据中猜测您真正想要什么。
标签: mysql sql sql-server select