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

如何从子查询中仅获取单个users.name字段值

解决方法

你可以通过两种方式调整SQL,实现仅输出users.name字段:

方式一:优化子查询结构(推荐,性能更优)

将子查询简化为仅统计支付次数并排名,外层通过uid关联users表获取用户名,避免子查询中不必要的字段关联:

SELECT users.name
FROM users
JOIN (
    SELECT pay.uid,
           RANK() OVER(ORDER BY COUNT(pay.uid) DESC) AS ranking
    FROM pay
    GROUP BY pay.uid
) AS ranked_pay ON users.uid = ranked_pay.uid
WHERE ranked_pay.ranking = 1

方式二:精简原查询的字段

直接去掉子查询中不需要的pay.uid字段,同时确保GROUP BY子句兼容数据库要求(部分数据库需包含users.name):

SELECT name
FROM (
    SELECT users.name,
           RANK() OVER(ORDER BY COUNT(pay.uid) DESC) AS ranking
    FROM pay, users
    WHERE users.uid = pay.uid
    GROUP BY users.uid, users.name
) AS ranked_users
WHERE ranking = 1

说明

  • 第一种方式减少了子查询的关联操作,执行效率更高;
  • 第二种方式贴近你原有的查询结构,修改幅度小,但需注意GROUP BY的兼容性(若users.uid是主键,部分数据库可省略users.name)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:10:23