我的表格是这样的:
id type value
1 type1 Good
2 type1 Bad
3 type1 Match
4 type2 Good
5 type2 Bad
6 type2 Match
7 type3 Good
8 type3 Bad
9 type3 Match
每个“类型”有 3 个可能的值选项
目前我使用这段代码来预览数据
$result = mysql_query("SELECT type, value, COUNT(*) FROM data GROUP BY type,value ORDER BY COUNT(*) DESC");
echo "<table border='1'>";
while($row = mysql_fetch_array( $result )) {
echo "<tr>";
echo '<td><FONT SIZE=3 COLOR=BLACK> ' . $row['type'] . ' </FONT></td>';
echo '<td><FONT SIZE=3 COLOR=BLACK> ' . $row['value'] . ' </FONT></td>';
echo '<td><FONT SIZE=4 COLOR=GREEN> ' .$row['COUNT(*)'] . '</FONT></td>';}
echo "<tr>";
echo "</table>";
因此,表格的结果显示在 3 列多行 (3*3*3)
我试图将它显示在一个有 4 列只有 3 行的表格中 像这样:
type COUNT "Good" COUNT "Bad" COUNT "Match"
type1 1 1 1
type2 1 1 1
type3 1 1 1
我不知道该怎么做。
知道怎么做吗?
最佳答案
您可以(ab)使用 SUM
与 CASE
的组合来执行此操作:
SELECT type,
SUM(CASE WHEN type='Good' THEN 1 ELSE 0 END) AS good,
SUM(CASE WHEN type='Bad' THEN 1 ELSE 0 END) AS bad,
SUM(CASE WHEN type='Match' THEN 1 ELSE 0 END) AS match
FROM data
GROUP BY type
这将根据类型对所有值进行分组,然后使用 SUM
找出每个值的数量。通过使用 CASE
,我们对每一行求和为 0 或 1,因此它只会加到一个“计数”。
关于mysql - 为每个值选择 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41869636/