这是我第一次尝试 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/