【问题标题】:SQL: Filter by count in a table with NO primary keySQL:在没有主键的表中按计数过滤
【发布时间】:2018-09-21 21:16:40
【问题描述】:

在一个看起来像这样的表中:

  name    |    posts    |  comments
---------------------------------------
user1     |  page1      |  90
user1     |  page2      |  50
user1     |  page3      |  40
user2     |  page2      |  55
user2     |  page4      |  45
.         |  .          |  .
.         |  .          |  .
.         |  .          |  .

例如,查找拥有超过 2 个帖子的用户的最佳方法是什么?

我通常这样做的方式是使用主键进行分组,

(for example) SELECT * FROM table
              GROUP BY PrimaryKey
              HAVING COUNT(name) > 2

但在这种情况下不能这样做;;有什么方法可以继续?

提前谢谢你!

【问题讨论】:

  • 您的查询有什么问题?
  • normally do this is to group by using the primary keyGROUP BY PrimaryKey 你知道 PK 是独一无二的,所以你不会得到任何重复吗?

标签: mysql sql group-by count primary-key


【解决方案1】:

你似乎想要这个:

SELECT user_name
FROM table
GROUP BY user_name
HAVING COUNT(*) > 2;

您似乎对主键是什么有误解。您的查询版本将不返回任何行。为什么不?主键是唯一的。没有重复项。您希望 user_name 重复,所以这似乎是合适的查询。

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多