首页 > 解决方案 > SQL - 在两个表上查找唯一值

问题描述

我有两张桌子要找

一个。不同的用户名、不同的文档#和不同的位置名称

湾。不同的用户名、不同的文档#和不同的位置名称

这是两个单独的 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

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

标签: sqljoingroup-bydistinct

解决方案


您需要与您的组聚合

您可以按 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

推荐阅读