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

PostgreSQL中如何查询用户最早满足条件的访问记录的Greeting属性

最简实现方案

以下是满足需求的PostgreSQL查询语句:

SELECT DISTINCT ON (u.UserID)
    u.UserID,
    u.UserName,
    v.Greeting
FROM Users u
JOIN Visits v ON u.UserID = v.UserID
WHERE EXISTS (
    SELECT 1 
    FROM Visits v2 
    WHERE v2.UserID = u.UserID 
      AND v2.VisitReason = 123
)
ORDER BY u.UserID, v.VisitDate ASC;

关键说明:

  • EXISTS子查询:筛选出存在VisitReason=123访问记录的用户,逻辑清晰直接。
  • DISTINCT ON (u.UserID):PostgreSQL专属语法,确保每个用户仅返回一行结果,是实现该需求最简洁的方式之一。
  • ORDER BY u.UserID, v.VisitDate ASC:指定分组后的排序规则,让每个用户的最早访问记录排在组内首位,从而被DISTINCT ON选中。

如果不需要返回UserName,可进一步简化:

SELECT DISTINCT ON (UserID)
    UserID,
    Greeting
FROM Visits
WHERE UserID IN (SELECT UserID FROM Visits WHERE VisitReason = 123)
ORDER BY UserID, VisitDate ASC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:46:01