1

我发现我不知道如何在 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 |
+------+-------+
4

1 回答 1

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  
于 2012-08-11T11:34:16.793 回答