我有这样的 table
| SessionId | Action |
----------------------
| 1 | LOGIN |
| 1 | INDEX |
| 3 | LOGIN |
| 1 | SHOW |
| 3 | DELETE |
| 1 | INSERT |
| 6 | LOGIN |
| 3 | LOGOUT |
| 5 | LOGIN |
我需要为每个具有 LOGIN
操作的 SessionId
获取没有 LOGIN
的所有操作的计数。
| SessionId | count |
---------------------
| 1 | 3 |
| 3 | 2 |
| 5 | 0 |
| 6 | 0 |
而且我现在用的是sql server(mysql语法就可以)
最佳答案
编辑:添加了 LEFT JOIN,以便结果中包含 SessionId 值 5 和 6。这也有消除子查询的好处。
SELECT t.SessionId, COUNT(tc.Action)
FROM YourTable t
LEFT JOIN YourTable tc
ON t.SessionId = tc.SessionId
AND tc.Action <> 'LOGIN'
WHERE t.Action = 'LOGIN'
GROUP BY t.SessionId;
关于mysql - 通过自己的数据从表中获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8170165/