You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP+MySQL多SELECT语句获取各泳姿最快记录并展示到表格

7年级各泳姿最快记录查询与表格展示方案

更高效的单查询方案(推荐)

不用写多个SELECT语句,直接通过GROUP BY一次性获取所有泳姿的最快记录,减少数据库交互次数。假设你的数据表名为swim_records,包含grade(年级)、stroke(泳姿)、name(姓名)、time(成绩时间)字段,修改后的代码如下:

<?php
// 数据库连接配置,替换成你的实际信息
$servername = "localhost";
$username = "你的用户名";
$password = "你的密码";
$dbname = "你的数据库名";

// 创建并检查数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 核心查询:按泳姿分组,取每组最快时间
$sql = "SELECT stroke, name, MIN(time) AS fastest_time
        FROM swim_records
        WHERE grade = 7
        GROUP BY stroke
        ORDER BY stroke";
$result = $conn->query($sql);

// 生成HTML表格
echo "<table border='1'>
        <tr>
            <th>泳姿</th>
            <th>姓名</th>
            <th>最快时间</th>
        </tr>";

if ($result->num_rows > 0) {
    // 遍历结果输出每行数据
    while($row = $result->fetch_assoc()) {
        echo "<tr>
                <td>" . $row["stroke"] . "</td>
                <td>" . $row["name"] . "</td>
                <td>" . $row["fastest_time"] . "</td>
              </tr>";
    }
} else {
    echo "<tr><td colspan='3'>暂无7年级泳姿记录</td></tr>";
}
echo "</table>";

$conn->close();
?>

关键说明:

  • WHERE grade = 7:筛选出7年级的所有记录
  • GROUP BY stroke:按泳姿对记录分组
  • MIN(time):自动计算每组中的最小时间(也就是最快成绩)
  • 最后通过循环直接把查询结果渲染成表格,逻辑简单清晰

基于数组的多查询方案(如果你想坚持用多个SELECT)

先定义所有要查询的泳姿数组,循环执行每个泳姿的查询,把结果存入数组后再统一生成表格:

<?php
// 数据库连接部分同上,替换成你的配置
$servername = "localhost";
$username = "你的用户名";
$password = "你的密码";
$dbname = "你的数据库名";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 定义需要查询的泳姿列表
$target_strokes = ["自由泳", "仰泳", "蛙泳", "蝶泳"];
$all_records = [];

// 循环查询每个泳姿的最快记录
foreach ($target_strokes as $stroke) {
    $sql = "SELECT name, time 
            FROM swim_records 
            WHERE grade = 7 AND stroke = '$stroke'
            ORDER BY time ASC 
            LIMIT 1";
    $result = $conn->query($sql);
    
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        $all_records[] = [
            "stroke" => $stroke,
            "name" => $row["name"],
            "time" => $row["time"]
        ];
    } else {
        // 没有记录时填充默认值
        $all_records[] = [
            "stroke" => $stroke,
            "name" => "无记录",
            "time" => "无"
        ];
    }
}

// 生成表格
echo "<table border='1'>
        <tr>
            <th>泳姿</th>
            <th>姓名</th>
            <th>最快时间</th>
        </tr>";

foreach ($all_records as $record) {
    echo "<tr>
            <td>" . $record["stroke"] . "</td>
            <td>" . $record["name"] . "</td>
            <td>" . $record["time"] . "</td>
          </tr>";
}
echo "</table>";

$conn->close();
?>

关键说明:

  • 用数组$target_strokes管理所有要查询的泳姿,避免重复编写SELECT语句
  • 每次查询后把结果存入$all_records数组,统一处理空记录情况
  • 最后遍历数组生成表格,确保所有泳姿的记录都能展示在同一个表格中

内容的提问来源于stack exchange,提问作者bgarcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:37:32