-1

我有一个有两个表的数据库: 表 1 有用户 表 2 有这些用户的代表

如果可能的话,我想在一个查询中执行以下操作:

  1. 列出从用户表中提取的委托人用户 ID
  2. 计算委托人拥有的委托人数量
  3. 列出代表的 ID

我已经完成了第 1 步和第 2 步,但如果可能的话,不知道如何实现第 3 步。到目前为止,这是我的查询:

Select distinct users.UserID, Count(delegates) as 'Number of Delegates'
  From delegates
  inner Join users on delegates.delegates = users.handle
  Group by Users.UserID
  Order by Count(delegates) desc
4

3 回答 3

1

这是 SQL-Server 解决方案:

Select * From
(
Select users.UserID, users.handle, Count(delegates) as 'Number of Delegates'
  From delegates
  inner Join users on delegates.delegates = users.handle
  Group by Users.UserID, users.handle

) myTbl
Inner Join delegates d
on delegates.delegates = myTble.handle 

Order by 'Number of Delegates' desc
于 2013-04-03T20:20:17.200 回答
1

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

Select distinct users.UserID,
       COUNT(delegates) as 'Number of Delegates',
       GROUP_CONCAT(delegates.delegate_id SEPARATOR ',') as 'Delegate list'
  From delegates
  inner Join users on delegates.delegates = users.handle
  Group by Users.UserID
  Order by Count(delegates) desc
于 2013-04-03T20:00:51.300 回答
0

由于您已按用户 ID 分组,因此您不能在 Select 子句中使用 Delegate ID。您拥有的一种选择是同时按 userID 和 DelegateID 进行分组,但缺点是相同的计数会重复多次。

于 2013-04-03T19:59:44.287 回答