操作方法:如何使用 SQL SELECT JOIN 提取最新记录
Posted
技术标签:
【中文标题】操作方法:如何使用 SQL SELECT JOIN 提取最新记录【英文标题】:How To: How to extract the latest record with a SQL SELECT JOIN 【发布时间】:2020-11-09 13:13:05 【问题描述】:美好的一天,
我目前在使用 SQL 中的 select 语句时遇到问题。我正在尝试从表中提取数据。 select 语句为同一记录返回多行,因为该记录有不同的个人。但是我确实想查看最新的单个行。
例如结果选项卡:
Row 1: 1 entry1 yes yes yes 20 50 Dawid
Row 2: 2 entry1 yes yes yes 20 50 Jan
Row 3: 3 entry1 yes yes yes 20 50 Charlie
必需的结果选项卡:
Row 3: 3 yes yes yes 20 50 Charlie
不幸的是,我必须使用的唯一参考是主键。
ENT 用于入口表,实例链接到工作流并从实例链接到当前工作流进度。我需要帮助才能仅返回每个条目所有结果中的最新 1 个。这可能吗?
我不能使用 CTE 或任何变量声明,因为我要生成一个不支持它的 SQL 报告。
LEFT JOIN ENT_Instance ENTI ON ENT.entryID = ENTI.entryID
LEFT JOIN VW_Instance WFI ON ENTI.instanceID = WFI.instanceID
LEFT JOIN WF_Progress wfpg ON WFI.instanceID = wfpg.instanceID
我们将不胜感激。
【问题讨论】:
“但是我不想看到最新的单个行”,然后您在所需结果中显示“最后”行。是哪一个,你做还是不做? “我不能使用 CTE 或任何变量声明,因为我将生成一个不支持它的 SQL 报告。”应用程序,您也应该标记该应用程序。 我对我的错字表示歉意 Larnu - 我只想看到最新的个人。我还提出了我对应用程序的 SQL 包支持的担忧。这是一项正在进行的工作。 这能回答你的问题吗? Retrieving last record in each group from database - SQL Server 2005/2008 这能回答你的问题吗? How to select the last record of a table in SQL? 【参考方案1】:你可以尝试这样做:
SELECT a.*, p1.*
FROM ENT_Instance a
JOIN VW_Instance p1 ON (a.id = p1.ENTI)
LEFT OUTER JOIN ENT_Instance p2 ON (a.id = p2.ENTI AND
(p1.date < p2.date OR (p1.date = p2.date AND p1.id < p2.id)))
WHERE condition;
【讨论】:
以上是关于操作方法:如何使用 SQL SELECT JOIN 提取最新记录的主要内容,如果未能解决你的问题,请参考以下文章
如何修改此工作 SQL SELECT/JOIN 查询以删除重复项?
优化 Sql Query 去掉 SELECT 子句并使用 JOIN
SQL sum()后许多字段要group by不使用group by, 改用left join select 需要的字段。哪个方法好?速度快?