mysql - sql在按其他列分组后选择并显示一列的所有值

标签 mysql sql group-by

我有下表,其中存储了每位车手的得分以及他所代表的车队。

driver    team     points
-------------------------
Josh      Mercedes   12
Aron      BMW         5
Ben       Mercedes    9
Jake      BMW        17
Mike      BMW         7
Brad      Chevrolet   3

现在我想显示每个车队的分数+车队中所有车手的名字。

期望的输出:

BMW         29     Aron, Jake, Mike
Mercedes    21     Josh, Ben
Chevrolet    3     Brad

查询: 我的查询的问题是它只显示第一个司机的名字。我必须使用什么函数来包含所有驱动程序的名称?

<?php
$sql = "SELECT driver, team, points, SUM(points) AS totals FROM `example-table` GROUP BY team ORDER BY `points` DESC";

$stmt = $pdo->prepare($sql);
$stmt->execute();

if($stmt->rowCount())
{
while ($result = $stmt->fetch(PDO::FETCH_ASSOC))
{

echo $result['team'];
echo $result['driver'];
echo $result['totals'];
?>
<br>

<?php 
}// end while
}// end if
else {
 echo '0 results';
}// end else
?>

最佳答案

使用Group_Concat功能

SELECT team, SUM(points) AS totals,group_concat(driver)
FROM `example-table` 
GROUP BY team 
ORDER BY `points` DESC

关于mysql - sql在按其他列分组后选择并显示一列的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855563/

相关文章:

MySQL 多表子查询

php - 更新两个 MySQL 数据库

用于按列选择系列中第一个的 SQL 查询

mysql - 此嵌套查询的替代方法?

python - python中的函数用于在大文件中搜索特定名称的可能组合

java - 在没有投影的情况下将分组依据添加到 Hibernate Criteria-Query

mysql - 用另一列的最后 10 位数字创建一个新列

php - 如何在加载图像时(滚动时)实现淡入淡出效果

mysql - 如何仅更新日期列中的月份?

sql - 按最小值选择列 - 分组依据