联接说明 - SQL 语法

时间:2021-05-01 17:38:49

标签: mysql sql

我正在处理我必须在其中使用 SQL 的项目。我遇到了一个问题,因为我没有从我使用的查询中得到预期的结果。我仍在学习我在 SQL 方面的经验,所以这里的任何帮助都会非常有帮助。问题叙述如下:

使用的查询:

select count(distinct del_table.user_id) as distinct_user_id,
       count(1) as row_counts
from user_names del_table join
     userids req
     on req.user_id = del_table.user_id;

user_name

user_name column values

userids

enter image description here

从上面的查询,我期待的结果如下

expected result

但我越来越像下面

returned result

基本上,row_counts 会翻倍,但不知道为什么。有人可以帮我指出我犯的错误并帮助纠正我的查询以达到预期的结果吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

评论太长了。

对于您提供的数据,您应该会得到您期望的结果。换句话说,你的理解是正确的。

要调试此问题,请计算每个表中的行数。在这种情况下,您知道 12345 是唯一匹配项,因此我们可以将计数限制为:

select count(*)
from user_names
where user_id = 12345

select count(*)
from userids
where user_id = 12345;

我猜这些会返回 1/62/3。换句话说,表格不包含您认为它们包含的内容。