在一列中选择该值未在另一列中出现 5 次的值

Posted

技术标签:

【中文标题】在一列中选择该值未在另一列中出现 5 次的值【英文标题】:Select values in one column where that value do not appear in other column 5 times 【发布时间】:2015-11-19 03:45:57 【问题描述】:

假设我有一个包含两列的 SQL 表 membersusernamesponsor

username | sponsor
------------------
bill     | bob
username1| bill 
username2| username2
username3| bill   
username4| bill  
username5| bill   
username6| bill  
username7| bill  
collin   | username6
austin   | usename3

我想编写一个查询,返回所有用户名,其中这些用户名没有在列赞助商中出现 5 次。如何编写这个 SQL 查询?

期望的输出:

username1
username2
username3
username4
username5
username6
username7
collin
austin

【问题讨论】:

类似于 SELECT * FROM members WHERE username NOT IN (SELECT username FROM members GROUP BY 赞助商 WHERE COUNT(*)5)。 您收到错误还是产生了不正确的结果? 【参考方案1】:

我认为这应该可行:

SELECT m.username
  FROM members m,
    (SELECT sponsor, COUNT(sponsor)
      FROM members
      GROUP BY sponsor
      HAVING COUNT(sponsor) < 5) c
  WHERE m.username = c.sponsor

我从您的示例输出中假设您想要赞助少于 5 个其他成员的成员。

【讨论】:

你做的那个只显示 username2 username6 username3【参考方案2】:

这个查询回答了问题。

SELECT m.username FROM members m, (SELECT sponsor, COUNT(sponsor) FROM members GROUP BY sponsor HAVING COUNT(sponsor) >= 5) c WHERE m.username != c.sponsor

感谢达尔文!

【讨论】:

以上是关于在一列中选择该值未在另一列中出现 5 次的值的主要内容,如果未能解决你的问题,请参考以下文章

在一列中对具有相同数据的行进行分组,并将其相关数据汇总在另一列中 [ORACLE SQL]

在另一列中使用一列中的值

Pyspark:如何根据另一列中的匹配值从数组中的第一次出现中选择直到最后的值

调整相对于 2 列的选择以在一列中返回最大值以用于另一列中的重复条目

EXCEL 比较一列数据是不是在另一列出现过

在 SQL 中,我可以在另一列中获取与它们没有关联的特定值的列中的值吗?