gpt4 book ai didi

mysql - SQL 行计数

转载 作者:可可西里 更新时间:2023-11-01 07:53:53 26 4
gpt4 key购买 nike

在继续之前,我不想使用任何涉及选择所有行并手动计算出现次数的查询。顺便说一句,我正在用 PHP 执行此操作。

基本上,我有一张禁令表。每个新记录/行都是一个新禁令。标题为 user_name 的字段表示哪个玩家被禁止。有没有办法计算出这张表中谁的禁令最多?我真的不想选择每一行,然后为每个玩家计算出来。该表非常大,因此使上述解决方案不切实际且效率低下。

最佳答案

这是通过 COUNT() 聚合完成的,按 user_name 分组。

按用户从多到少获取禁令:

SELECT
user_name,
COUNT(*) as numbans
FROM bans
GROUP BY user_name
/* ordered by number of bans from greatest to least */
ORDER BY numbans DESC

只获取最被禁止的用户:

SELECT
user_name,
COUNT(*) as numbans
FROM bans
GROUP BY user_name
ORDER BY numbans DESC
/* adjust LIMIT for how many records you want returned -- 1 gives only the first record */
LIMIT 1

在您的问题中,您非常担心不想在 PHP 中手动计数。请注意,这几乎从不需要。 RDBMS 系统专为组织和查询数据而设计,非常擅长高效地完成此类任务。继续阅读 GROUP BY clauses and aggregate functions在 MySQL 中并掌握它们。您通常不需要在代码中执行此操作。

奖励:让所有用户被禁止 3 次或更多次

SELECT
user_name,
COUNT(*) as numbans
FROM bans
GROUP BY user_name
/* HAVING clause limits results of an aggregate like COUNT() (which you cannot do in the WHERE clause) */
HAVING numbans >= 3

关于mysql - SQL 行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com