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

为何SQL查询无输出?需查询指定用户关联的限定数量帖子

问题排查与解决方案

无输出的原因

  • 你的查询语句中WHERE uid = (SELECT id FROM users存在逻辑错误:子查询SELECT id FROM users会返回多个用户ID(1、2、3),而=运算符要求右侧必须是单个值,导致条件永远无法匹配,因此没有任何输出。
  • 同时当前查询完全未实现「最多10个用户+每个用户最多10条帖子」的需求。

正确的查询实现

以下是针对需求的两种实现方式,适配不同数据库环境:

方法1:使用窗口函数(支持MySQL 8+、SQLite 3.25+、PostgreSQL等)

-- 先筛选最多10个用户,再对每个用户的帖子取前10条
SELECT u.id AS user_id, u.name, p.id AS post_id, p.post
FROM (
    SELECT id, name FROM users LIMIT 10 -- 限制最多10个用户
) u
JOIN (
    SELECT 
        id, post, uid,
        ROW_NUMBER() OVER (PARTITION BY uid ORDER BY id) AS post_rank
    FROM posts
) p ON u.id = p.uid
WHERE p.post_rank <= 10; -- 每个用户最多保留10条帖子

方法2:兼容旧版数据库(如MySQL 5.x)

如果你的数据库不支持窗口函数,可使用关联子查询实现:

SELECT u.id AS user_id, u.name, p.id AS post_id, p.post
FROM (SELECT id, name FROM users LIMIT 10) u
JOIN posts p ON u.id = p.uid
WHERE (
    SELECT COUNT(*) 
    FROM posts p2 
    WHERE p2.uid = p.uid AND p2.id <= p.id
) <= 10;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:52:40