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

如何统计MySQL中每个用户对应的后续表条目数并实现PHP函数

实现方案

前提假设

  • 表名为user_records,可根据实际业务修改
  • id为自增主键,条目先后顺序按id升序判定
  • 示例使用PDO操作数据库,兼容主流数据库同时可避免SQL注入

完整PHP实现代码

<?php
// 数据库配置,替换为实际环境的配置
$dbHost = '127.0.0.1';
$dbName = 'your_database';
$dbUser = 'your_username';
$dbPass = 'your_password';
$tableName = 'user_records';

/**
 * 统计每个用户对应的后续条目数量
 * @param PDO $pdo 数据库连接实例
 * @param string $tableName 目标表名
 * @return array 统计结果数组,键为user_id,值为后续条目数
 */
function countFollowingEntries(PDO $pdo, string $tableName): array
{
    // 按id升序查询所有user_id记录
    $stmt = $pdo->query("SELECT user_id FROM {$tableName} ORDER BY id ASC");
    $userList = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
    $total = count($userList);
    $result = [];
    
    foreach ($userList as $index => $userId) {
        // 后续数量计算规则:总数量 - 当前索引 - 1
        $result[$userId] = $total - $index - 1;
    }
    return $result;
}

try {
    // 初始化数据库连接
    $pdo = new PDO("mysql:host={$dbHost};dbname={$dbName};charset=utf8mb4", $dbUser, $dbPass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $statisticData = countFollowingEntries($pdo, $tableName);
    // 按要求格式输出结果
    foreach ($statisticData as $userId => $count) {
        echo "{$userId} > {$count}" . PHP_EOL;
    }
} catch (PDOException $e) {
    die("数据库操作错误:" . $e->getMessage());
}

可选SQL直接查询方案

如果不需要PHP二次计算,也可以直接通过SQL查询得到统计结果:

SELECT 
    t1.user_id,
    (SELECT COUNT(*) FROM user_records t2 WHERE t2.id > t1.id) AS follow_count
FROM user_records t1
ORDER BY t1.id ASC

直接读取该查询结果遍历输出即可达到相同效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:42:02