这是我通常计算行数的方法......
$query = "SELECT * FROM users";
$stmt = $db->prepare($query);
$stmt->execute();
$count = $stmt->rowCount();
这将计算所有行,即使我使用WHERE子句,它仍将计算满足该条件的每一行 . 但是,假设我有一个表,我们将其称为tokensEarned(这是我的实际表名) . 我有以下数据......
user_id = 1,2,4,5,8,8,2,4,3,7,6,2(这些是我表中的实际行 - 显然,用户1有1个条目,2有3个条目,等等)总而言之,我有12个条目 . 但我不希望我的查询计数12.我希望我的查询计算每个user_id一次 . 在此示例中,我的计数应显示为8 .
对此有何帮助?如果您有任何具体问题或需要澄清,我可以进一步解释 . 我会很感激 . 谢谢 .
3 回答
以下查询将产生不同的用户计数:
在单个查询中无法获取所有记录和不同的计数 .
无论您使用上面的查询还是返回所有实际的不同行,实际上取决于您是否需要完整记录 . 如果您需要的只是计数,那么返回记录中的数据是浪费的,我上面给出的可能是最好的选择 . 如果确实需要数据,那么选择所有不同的行可能更有意义 .
将您的查询更改为以下内容,这样您只显示唯一的
user_id
:您可以在mysql中使用distinct来仅选择表中的唯一字段 .