跨越三个表的SQL Server中的GROUP BY

时间:2012-08-11 11:10:16

标签: sql-server group-by

我发现我不知道如何在SQL Server中对查询结果进行分组。我有三个表的SQL Server 2005:

- id
- name

实体:

- domain_id
- user_id

用户:

- id
- login

因此,它是第三个表中两个表之间的通用关系,其中几个域可能与一个用户有关。

T-SQL查询:

SELECT domain.name, users.login 
FROM domain, entity, users 
WHERE domain.id = entity.domain_id AND entity.user_id = users.id 
GROUP BY users.login, domain.name

返回:

+------+-------+
| name | login |
+------+-------+
| dom1 | user1 |
| dom4 | user1 |
| dom5 | user1 |
| dom2 | user2 |
| dom3 | user3 |
+------+-------+

我的问题是如何创建返回与MySQL相同的T-SQL查询:

SELECT domain.name, user.login 
FROM domain, entity, user 
WHERE domain.id = entity.domain_id AND entity.user_id = user.id 
GROUP BY user.login

+------+-------+
| name | login |
+------+-------+
| dom5 | user1 |
| dom2 | user2 |
| dom3 | user3 |
+------+-------+

1 个答案:

答案 0 :(得分:2)

创建一个返回与MySQL

相同的MS SQL(和大多数标准实现)
SELECT MAX(domain.name), user.login  
FROM domain, entity, user  
WHERE domain.id = entity.domain_id AND entity.user_id = user.id  
GROUP BY user.login 

在这两种环境中,FROM / WHERE连接更好地表示为

FROM domain
    INNER JOIN entity
         ON domain.id = entity.domain_id 
    INNER JOIN user  
         ON entity.user_id = user.id