具有行号计数的相关子查询

问题描述 投票:0回答:3

我有一个下表,我想要使用获取每个uid组ID最少的初始行。

表如下

_id  uid  type 
1     a    a
2     b    bbb   #satisfied
3     b    ccc
4     b    aaa   #satisfied
5     a    aaa   #satisfied
6     b    eee

我已经可以使用以下相关子查询获取初始行

SELECT *
FROM table
WHERE _id IN (
               SELECT MIN(_id) 
               FROM table 
               WHERE type IN ('aaa','bbb')
               GROUP BY uid
             );

但是,我希望第4列显示满足条件(type IN ('aaa','bbb'))的行数,如下所示cnt

_id  uid  type  cnt
5     a    aaa   1
2     b    bbb   2

我想我可以数次使用这个联接,然后将结果联接到我的代码中。。。但这很丑。。。

我有一个下表,我想要使用的是获取每个uid组的ID最少的初始行。下表如下:_id uid类型1 a a 2 b bbb #satisfied 3 b ...

mysql sql select group-by greatest-n-per-group
3个回答
1
投票

您可以尝试以下方法:


1
投票

如果您正在运行MySQL 8.0,则可以为此使用窗口函数:


0
投票

您可以在没有子查询的情况下执行此操作。在MySQL 8+中,您可以使用以下逻辑:

© www.soinside.com 2019 - 2024. All rights reserved.