在一列中选择该值未在另一列中出现 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 次的值的主要内容,如果未能解决你的问题,请参考以下文章