使用' AS'

时间:2016-11-04 04:31:43

标签: mysql sql select

使用' 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循环将获取两行。

谢谢

2 个答案:

答案 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;