SQL-在两个表上查找唯一值

时间:2019-07-14 22:10:24

标签: sql join group-by distinct

我有两个要查找的表

a。不同的用户名,不明显的文档编号和不明显的位置名称

b。唯一的用户名,非唯一的文档编号和唯一的位置名称

这是两个单独的sql查询。

这是这些表的样子:

用户表

|---------------------------------------|------------|
| UserId       | UserName     |Document#| LocationId |
|---------------------------------------|------------|
|  1           |  bob2#       | DL      |   1        |
|---------------------------------------|------------|
|  2           |  mary3#      | Passport|   2        |
|---------------------------------------|------------|
|  3           |  bob2#       | SIN#    |   4        |
|---------------------------------------|------------|
|  4           |  sam5#       | DL      |   3        |
|---------------------------------------|------------|
|  5           |  bob2#       | SIN#    |   1        |
|---------------------------------------|------------|

位置表

|---------------------------------------|
| LocationId   | UserId   |LocName      |
|---------------------------------------|
|  1           |   1      | Denvor      |
|---------------------------------------|
|  2           |   2      |  NY         |
|---------------------------------------|
|  3           |   3      | San Fran    |
|---------------------------------------|
|  4           |   4      | Chicago     |
|---------------------------------------|

这是我为a)部分所做的尝试

select User.UserName, User.Document#, Location.LocName 
from User Inner Join
     Location
     On User.UserId = Location.LocationId
Group by User.UserName

这是针对b)部分

select User.UserName, User.Document#, Location.LocName 
from User Inner Join
     Location
     On User.UserId = Location.LocationId
Group by User.UserName, Location.LocName

有人可以阐明如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您需要通过以下方式与您的组进行汇总

示例可以按User.UserName分组,并获取文档数(计数)和Location.LocName计数

select User.UserName, Count(User.Document#), Count(Distinct Location.LocName) 
from User
Inner Join Location On User.UserId = Location.LocationId
Group by User.UserName

编辑:

我认为您在将用户ID关联到位置ID时联接做错了

应该是

select User.UserName, Count(User.Document#), Count(Distinct Location.LocName) 
from User
Inner Join Location On User.LocationId = Location.LocationId
Group by User.UserName