【问题标题】:Select values in one column where that value do not appear in other column 5 times在一列中选择该值未在另一列中出现 5 次的值
【发布时间】: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)。
  • 您收到错误还是产生了不正确的结果?

标签: mysql left-join inner-join union exists


【解决方案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

感谢达尔文!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多