MySQL - 在不同条件下计算两件事

标签 mysql count

我想在一个查询中计算不同条件下的两件事。

SELECT COUNT(*) AS count FROM table_name WHERE name = ?

SELECT COUNT(*) as count FROM table_name WHERE address = ? AND port = ?

我需要对具有特定地址和特定端口的行进行计数,并对具有特定名称的行进行单独计数。

我知道我可以做

SELECT (COUNT*) as count FROM table_name WHERE (address = ? AND port = ?) OR name = ?

然而,这是一个单一的计数,我需要将它们分开,以便我可以向用户显示更准确的消息。

我该怎么做呢?帮助将不胜感激!

最佳答案

简单来说:

SELECT 
    SUM(IF(name = ?, 1, 0)) AS name_count,
    SUM(IF(address = ? AND port = ?, 1, 0)) AS addr_count
FROM 
    table_name

关于MySQL - 在不同条件下计算两件事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10576435/

相关文章:

php - laravel 在 groupBy 之后使用 count/sum 方法

MySQL AVG() 的 varchar 可能吗?

php - PDO 请求导致 500 内部服务器错误

php - 用于在 Wordpress 中访问 MySQL 数据库的 JavaScript + PHP

java - JPA 一对多/多对多示例

mysql - "Faking"SQL 中 3 个表的结果子表

MySQL - 按 count() 和 GROUP BY 排名

java - 使用计数器将数组插入到 HashMap 中

python - Django:无论返回的查询大小如何,链式过滤器上的 queryset.count() 都比单个过滤器慢得多——有解决方案吗?

MySQL 返回特定用户的总体排名事件