我有一个名为“用户”的表,其中包含以下行的信息(名字等...):
username
----------
mikha
guy
maricela
另一个名为“问题”的表包含以下行:
asker
----------
mikha
mikha
maricela
guy
maricela
另一个名为连接的表具有以下行:
username1
----------
guy
mikha
mikha
我想选择有关用户“mikha”的信息,包括当他是 questions.asker 和当他是 connections.username1 时的计数。我使用以下查询:
SELECT COUNT(questions.asker) AS asking,COUNT(connections.username1) AS following
FROM users LEFT JOIN questions ON users.username = questions.asker
LEFT JOIN connections ON users.username = connections.username1
WHERE users.username = 'mikha'
预期成绩:
asking: 2 (as mikha is found 2 times asking)
following: 2 (as mikha is found 2 times following)
实际结果:
asking: 4
following: 4
如果我使用COUNT(DISTINCT questions.asker)
并且COUNT(DISTINCT connections.username1)
我得到的结果始终为 1,因为它只计算名称一次。我尝试了 GROUP BY 也无济于事。
那么,我怎样才能使用 distinct 来避免重复,同时在所有可用的时间都计算相同的名称,而不仅仅是一个?
我创建了这个小提琴来自己测试问题。
提前致谢 问候迈克尔