使用' AS'
时,提取多行无法正常工作例如,
$stmt = $mysqli->prepare("SELECT id, (cpm/SUM(cpm)) AS Importance FROM ads")
$stmt->execute();
$stmt->bind_result($id, $Importance);
while($stmt->fetch()){
echo $id;
}
只会在有2行时打印出ID为#1的行。但是,如果我取出'(cpm / SUM(cpm))AS重要性',while循环将获取两行。
谢谢
答案 0 :(得分:1)
对多行使用聚合函数时,必须使用GROUP BY 例如
SELECT id, (cpm/SUM(cpm)) AS Importance FROM ads GROUP BY field_name
答案 1 :(得分:0)
SUM函数使其计算所有行的单个结果。在分区中使用它不会改变它,甚至不会改变AS语句。相反,它将使用其中一行(第一个或最后一个)进行划分。其他聚合函数也是如此,例如COUNT。
为了实现您的目标,您可以对SUM使用额外的选择,并使用其结果来计算所有条目的除法,例如:SELECT id, (cpm/(SELECT SUM(cpm) FROM ads)) AS Importance FROM ads;
。