查询从具有特定条件的子表获取用户名

时间:2017-12-08 11:05:15

标签: sql

我有一个表Admin和一个子表AdminOfArea。我想从Table2获取用户名,其中用户名只有一个Region不是多个,这是利物浦。在这种情况下,只有A和B符合这种情况。

表1看起来像

|Username |  UserType  |
|  abc    |  Admin     |
|   A     |  Admin     |
|  xyz    |  Admin     |
|   B     |  Admin     |

表2看起来像

|UserName  Region    |
| abc     Wales      |
| abc     Liverpool  |   
| abc     Westsussex |
| A       Liverpool  |
| xyz     Wales      |
| xyz     Liverpool  |
| xyz     Westsussex |
| B       Liverpool  |

3 个答案:

答案 0 :(得分:0)

以下是一种适用于任何数据库的方法:

select t1.*, t2.region
from table1 t1 join
     (select t2.username, max(region) as region
      from table2 t2
      group by t2.username
      having count(*) = 1
     ) t2
     on t1.username = t2.username;

答案 1 :(得分:0)

如果您想通过排除那些具有多个区域的用户名,仅基于 region ='利物浦' 从第二个表格中获取数据,您可以使用以下查询。

SELECT username FROM adminofarea WHERE region='Liverpool' GROUP BY adminofarea.username HAVING COUNT(1) = 1

答案 2 :(得分:0)

Select Username,count(Region) FROM AdminOfArea
GROUP BY Username

使用上层查询U将获得用户名以及特定用户名所具有的区域总数示例: abc有3个。

Select Username FROM AdminOfArea
GROUP BY Username
having count(Region) = 1

使用Having Clause,我们将那些只与1个区域相关联的用户名分开