【发布时间】:2014-08-03 03:13:42
【问题描述】:
我有一张桌子:
+----+--------+-------+
| ID | Winner | Loser |
+----+--------+-------+
| 1 | 1 | 4 |
| 5 | 1 | 2 |
| 6 | 1 | 3 |
| 3 | 2 | 3 |
| 4 | 2 | 4 |
| 2 | 3 | 4 |
+----+--------+-------+
赢家和输家都是另一个表中的 ITEM ID。
我正在尝试实现返回列的查询: 项目 ID、CountWinners、CountLosers。
目的是,对于每个 itemID,该项目将赢得 X 场比赛和失败 Y 场比赛。如果有平局,我可以按损失排序
SELECT t1.ID, t1.WinnerCount, t2.ID, t2.LoserCount from
(Select winner as ID, count(winner) as WinnerCount from rp_poss group by winner) as t1
FULL OUTER JOIN
(Select loser as ID, count(loser) as LoserCount from rp_poss group by loser) as t2
ON t1.ID=t2.ID
返回:
+------+-------------+----+------------+
| ID | WinnerCount | ID | LoserCount |
+------+-------------+----+------------+
| 2 | 2 | 2 | 1 |
| 3 | 1 | 3 | 2 |
| NULL | NULL | 4 | 3 |
+------+-------------+----+------------+
而不是
+----+-------------+------------+
| ID | WinnerCount | LoserCount |
+----+-------------+------------+
| 1 | 3 | 0 |
| 2 | 2 | 1 |
| 3 | 1 | 2 |
| 4 | 0 | 3 |
+----+-------------+------------+
我尝试使用 UNION ALL,但无法使其正常工作。有什么想法吗?
【问题讨论】:
-
列有点混乱 - 顶部表格中的
ID列实际上并未在输出中使用? (我看到了获胜者/失败者的聚合组,但与ID没有关系) -
@michaelberkowski 他的意思是赢家/输家中的整数所代表的人