mysql - 一起使用 MySQL 聚合函数和 UNION 运算符

标签 mysql union

这是我第一次尝试 MySQL 的 UNION 运算符,但以下代码给我一个错误“未定义索引:女性”。

$sql = "(SELECT COUNT(gender) AS male FROM members WHERE gender='m') 
        UNION 
        (SELECT COUNT(gender) AS female FROM members WHERE gender='f') 
        UNION 
        (SELECT COUNT(gender) AS no_gender FROM members WHERE gender='n') 
        ";
    $results = $con->query($sql);
    if ($row = $results->fetch_assoc()) {
        print $row["male"] . "<br>";
        print $row["female"] . "<br>";
        print $row["no_gender"] . "<br>";
    }
<小时/>

因此,根据 fancyPants 的解决方案,以下方法有效:

print "<table>";
$sql = "SELECT gender, COUNT(1) AS no_of_genders 
        FROM members 
        WHERE user_id = $user_id 
        GROUP BY gender";
$results = $con->query($sql);
while ($row = $results->fetch_assoc()) {
    print "<tr><td>" . $row["gender"] . "</td><td>" . $row["no_of_genders"] . "</td></tr>";
}
print "</table>";

最佳答案

您应该使用GROUP BY子句。

SELECT gender, 
COUNT(1) AS no_of_members
FROM members
GROUP BY gender;

这会产生与表中不同性别一样多的行。

关于mysql - 一起使用 MySQL 聚合函数和 UNION 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30320399/

相关文章:

mysql - 如何在 if 条件中使用列值?

mysql - 对多个 COUNT 求和的 UNION 语法

MySQL 订单条款错误

python - SQLAlchemy如何检查加载的对象属性是否等于列默认值

MySQL 产品名称的自然排序

mysql - 获取sql中每一行的平均值

Mysql UNION 和 GROUP BY

SQL聚合多个表的数据并对指定列求和

sql - 对联合查询求和

Mysql更新考虑以前的值