我有一个表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 |
答案 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个区域相关联的用户名分开