mysql - 使用mysql从表中获取最新记录

标签 mysql max

这肯定是理所当然的事,但我被难住了。我习惯在 MsAccess 中使用聚合“FIRST”,但 MySql 没有这样的东西。 这是一个简单的表格。我想根据日期返回最新的记录, 对于每个唯一的“组 ID”。我需要黄色的三条记录。

我被要求添加完整的查询。我尝试使用 JOIN 功能将“t”替换为临时表名称的建议之一,但它失败了。 “无法重新打开表 't'” 代码如下。我知道它很难看,但它确实返回了正确的数据集。

我稍微清理了代码并添加了 JOIN 代码。错误:“无法重新打开表 't'”

Table

enter code here
    DROP TABLE IF EXISTS `tmpMaxLookupResults`;

创建临时表tmpMaxLookupResults 作为

SELECT 
REPORTS.dtmReportCompleted,
RESULTS.lngMainReport_ID, RESULTS.lngLocationGroupSub_ID
FROM
(tbl_010_040_ProcedureVsTest_Sub as ProcVsSub
INNER JOIN tbl_010_050_CheckLog_RESULTS as RESULTS 
ON (ProcVsSub.lngLocationGroupSub_ID = RESULTS.lngLocationGroupSub_ID)
AND (ProcVsSub.lngProcedure_ID = RESULTS.lngProcedure_ID)
AND (ProcVsSub.lngItemizedTestList_ID = RESULTS.lngItemizedTestList_ID)
AND (ProcVsSub.strPasscodeAdmin = RESULTS.strPasscodeAdmin)
AND (ProcVsSub.strCFICode = RESULTS.strCFICode))
INNER JOIN
tbl_000_010_MAIN_REPORT_INFO as REPORTS ON (RESULTS.lngPCC_ID = 
REPORTS.lngPCC_ID)
AND (RESULTS.lngProcedure_ID = REPORTS.lngProcedure_ID)
AND (RESULTS.lngMainReport_ID = REPORTS.idMainReport_ID)
AND (RESULTS.strPasscodeAdmin = REPORTS.strPasscodeAdmin)
AND (RESULTS.strCFICode = REPORTS.strCFICode)
WHERE
(((RESULTS.lngProcedure_ID) = 143)
AND ((RESULTS.dtmExpireDate) IS NOT NULL)
AND ((RESULTS.strCFICode) = 'ems'))
GROUP BY RESULTS.lngMainReport_ID, RESULTS.lngLocationGroupSub_ID
ORDER BY (REPORTS.dtmReportCompleted) DESC;


SELECT t.* 
FROM tmpMaxLookupResults AS t 
JOIN (
SELECT lngLocationGroupSub_ID, 
MAX(dtmReportCompleted) AS max_date_completed 
FROM tmpMaxLookupResults 
GROUP BY lngLocationGroupSub_ID ) AS dt 
ON dt.lngLocationGroupSub_ID = t.lngLocationGroupSub_ID AND 
dt.max_date_completed = t.dtmReportCompleted
enter code here

最佳答案

试试这个

SELECT 
    tn.*
FROM 
    tableName tn
RIGHT OUTER JOIN 
    (
    SELECT 
        groupId, MAX(date_completed) as max_date_completed
    FROM 
        tableName 
    GROUP BY 
        groupId
    ) AS gt 
    ON 
        (gt.max_date_completed = nt.date_completed AND gt.groupId = nt.groupId)

关于mysql - 使用mysql从表中获取最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53182799/

相关文章:

sql - 选择最大计数

c - 为什么以下程序在获取数组中的输入后停止工作?

excel - 根据动态标准从范围中获取最大值

javascript - 如何仅使用 Javascript 在 div 中显示整个选择元素

javascript - 以特定格式将数组保存到MySQL

r - 添加一列,其中包含具有最大频率的对象的值

Java集合求最大数

php - mysql 选择数组中的位置 (php, mysql)

mysql - 创建组合或分离的关系表? (在 MySQL 中)

php - 如何用mysql在php中创建一个队列