mysql 选择计数不同行数量

标签 mysql sql

是否可以对 MySQL 中具有 5 或更多行且具有特定值的行进行计数?

它与 unique 完全相同,但会忽略少于 5 行的值

此外,如果它确实找到包含 5 行以上的值,我只希望它计为 1。

如果不清楚或不够清楚,请告诉我

Table:
ID 
1001
1001
1001
1001
1001
1002
1002
1003
1003
1003
1003
1003
1004

我希望此表计算具有 5 行或更多行的唯一 ID 的数量。 所以我希望它返回 2

更新:

$var = 5;
try{

  $results = $db->prepare("SELECT COUNT(*) as Total FROM(
    SELECT user_id as YourCount
    FROM card_stats
    GROUP BY user_id
    HAVING count(*) >= ?)");

  $results->bindParam(1,$var);//value
  $results->execute();
  $hold = $results->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
  echo "Data could not be retrieved from the database.";
  exit();
}
var_dump($hold);

我尝试了上面的方法,但它给了我一个错误。我在这里搞砸了什么吗?

更新2: 这对我有用

$var1 = 1101;
$var2 = 5;
try{

  $results = $db->prepare("SELECT count(*)
            FROM (SELECT user_id, count(*) as cnt
                  FROM card_stats
                  WHERE deck_id = ?
                  GROUP BY user_id
                 ) card_stats
            WHERE cnt >= ?;");

  $results->bindParam(1,$var1);//value
  $results->bindParam(2,$var2);//value
  $results->execute();
  $hold = $results->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
  echo "Data could not be retrieved from the database.";
  exit();
}
var_dump($hold);

最佳答案

所以类似:

SELECT COUNT(*) as TotalMoreThenFive FROM(
    SELECT value as YourCnt
    FROM YourTable
    GROUP BY value
    HAVING count(*) >= 5)

having 子句仅过滤那些具有 5 行或更多行的内容,然后用另一个查询将其包装起来,以计算有多少个这样的值。

关于mysql 选择计数不同行数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35698767/

相关文章:

c# - 无法从 C# 表单应用程序连接到本地数据库 (mdf)

python - SQLAlchemy 中的导入错误

mysql - 如何使用 mySQL 和 C# 缓冲多个数据库插入请求以便稍后延迟批量执行?

sql - 设置日期是从 getdate() 的一年开始吗?

sql - 使用sql从表中获取不可用值的列表

sql - 多个 'having' 子句炸毁了 Rails 3/Arel

sql - SQL where field vs.where field =具有多个ors?

php mysql 移动选定的标签

mysql - 使用mysql获取基于某一列的最新插入?

mysql - 如何修复计算不准确的移动平均线的 SQL 查询