是否可以对 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/