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

PostgreSQL获取各医院最新更新行报错求助

问题解决:获取每家医院最新更新记录的SQL报错修复

报错原因

你遇到的错误本质是PostgreSQL标识符大小写敏感导致的:
在内层子查询中,你给hospitalName等列添加了带双引号的别名"hospitalName",而PostgreSQL对带双引号的标识符会严格区分大小写。外层引用时使用LatestRecords.hospitalName(全小写),与实际定义的大写开头别名"hospitalName"不匹配,因此数据库找不到对应列。

另外注意:如果你的需求是按每家医院分组取最新记录,原SQL中PARTITION BY facilityName可能是笔误,应该改为PARTITION BY hospitalName,否则会按facilityName分组,不符合业务逻辑。

修正后的SQL方案

方案一:去掉不必要的列别名(推荐)

直接保留原列名,避免大小写匹配问题:

query = f"""
        SELECT to_json(r)
        FROM (
            SELECT hospitalName, lastUpdatedOn, active
            FROM (
                SELECT 
                    hospitalName, 
                    lastUpdatedOn, 
                    active, 
                    ROW_NUMBER() OVER (PARTITION BY hospitalName ORDER BY lastUpdatedOn DESC) AS rn
                FROM hospitals
            ) AS LatestRecords
            WHERE rn = 1
        ) AS r;
    """

方案二:保持带引号别名的一致性

如果必须使用带引号的别名,外层引用时需严格匹配大小写:

query = f"""
        SELECT to_json(r)
        FROM (
            SELECT LatestRecords."hospitalName" AS "hospitalName", LatestRecords."lastUpdatedOn" AS "lastUpdatedOn", LatestRecords."active" AS "active"
            FROM (
                SELECT hospitalName AS "hospitalName", lastUpdatedOn AS "lastUpdatedOn", active AS "active", ROW_NUMBER() OVER (PARTITION BY hospitalName ORDER BY lastUpdatedOn DESC) AS rn
                FROM hospitals
            ) AS LatestRecords
            WHERE rn = 1
        ) AS r;
    """

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:32:11