mysql - 获取属于具有两行以上父类别的行

标签 mysql sql database

我有一些公司和成员(member)的组合

Member Table
id  company_id companymember
1   1          john
2   1          Tam
3   2          haya
4   1          lee
5   3          kih
6   3          wild
7   3          cream 
8   3          earth

我要拾取的是

属于拥有两名以上成员的公司的 3 名成员姓名

我想要的是这样的

  • company_id 2 只有 1 名成员,第 3 行未被选中

  • company_id 3 有 4 个成员,因此未选择第 8 行

我的目标

1   1          john
2   1          Tam
4   1          lee
5   3          kih
6   3          wild
7   3          cream 

我可以做到,先获取company_ids,然后 通过脚本循环每个 id 并获取。

但是这样,它会执行sql多次。

有没有什么好的方法可以通过一句SQL在MySql上做到这一点?

最佳答案

试试这个

select id,company_id,companyMember 
from (Select id
            ,company_id
            ,companyMember
            ,Row_Number() OVER(PARTITION BY company_id ORDER By company_id) AS TotalCount 
      from MemberTable
     ) as Table1
where TotalCount <=3 and Company_id in(
                                      Select Company_id
                                      from MemberTable
                                      group by Company_id
                                      having COUNT(Company_id) >=3
                                      )
order by id

关于mysql - 获取属于具有两行以上父类别的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45094622/

相关文章:

mysql - 将 mysql 命令输出重定向到 bash 脚本中的文件时出现问题

php - 如何根据一个项目有多个条目的相关表进行排序?

sql - 批量更新是否比 db2 中的单个更新更快?

node.js - Prisma findMany 包含数组中的 2 个字段

mysql - 在 select 语句中计算 where 和 if

mysql - 当我使用 ORDER by 时,如何从表中获取没有重复的行?

python - Django、MySQL 和正则表达式 : not supporting re syntax?

用于从表中删除某些行的 MySQL 脚本

c++ - 使用 C++ 在 Linux 上进行 vector ODBC 配置

php 没有更新我的数据库