mysql - 通过自己的数据从表中获取

标签 mysql sql sql-server

我有这样的 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/

相关文章:

php - Laravel:具有关系的查询构建器

mysql - 如何记录查询及其在数据库上运行的每个查询的执行时间?

java - jOOq 替代 DSL.fieldByName

sql - 计算今天与 Oracle SQL 中的雇佣日期之间的天数?

mysql - sql server和mysql之间链接服务器上的分布式事务

php - 为什么背景图像:url() replace slash bar on url?

mysql - 如何将这些结果合并到一行中

sql - 从 SQL 中的对象获取数据

sql-server - 如何部署 .mdf 文件

mysql - 查询执行时间过长