我有一个尝试对相同值进行分组的查询。我遇到的问题是计算每个组的行数。我的代码在下面,但它似乎不起作用COUNT(*)只输出(1)
非常感谢任何想法。
<?
$sql_inv = mysql_query("SELECT * ,COUNT(*) FROM I WHERE id = '$I_1_id' OR id = '$I_2_id' OR id = '$I_3_id' OR id = '$I_4_id' OR id = '$I_5_id' OR id = '$I_6_id' OR id = '$I_7_id' OR id = '$I_8_id' OR id = '$I_9_id' OR id = '$I_10_id' OR id = '$I_11_id' OR id = '$I_12_id' OR id = '$I_13_id' OR id = '$I_14_id' OR id = '$I_15_id' OR id = '$I_16_id' OR id = '$I_17_id' OR id = '$I_18_id' OR id = '$I_19_id' OR id = '$I_20' GROUP BY id");
$inv_num_rows = mysql_num_rows($sql_inv);
while ($row_inv = mysql_fetch_array($sql_inv)){
echo $row_inv['I_Type'];
echo ' : ';
echo $row_inv['I_Model'];
echo ' (';
echo $row_inv['COUNT(*)'];
echo ')';
if ($inv_num_rows >= 2) {
echo '<br />';
}
}
?>
答案 0 :(得分:0)
假设id
是购物清单的ID,并且您想要计算每个ID的每个I_Type和I_Model组合的次数,oyu想要做的是GROUP BY all 3。
SELECT *, count(*) AS duplicates FROM I GROUP BY I_Model, I_Type, id;
如果根据GROUP BY
中指定的字段实际数据相同,它确实有用。构建更多schem的示例如下所示:http://sqlfiddle.com/#!2/a4c47/1
而不是像WHERE id = 1 or id = 2 or id = 3 or id =4 or id = 5
那样使用IN
等WHERE id IN(1,2,3,4,5)
这样的结构。它的读写更容易。