我有一个下表,我想要使用获取每个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 8.0,则可以为此使用窗口函数:
您可以在没有子查询的情况下执行此操作。在MySQL 8+中,您可以使用以下逻辑: