在MySQL statment

问题描述:

这里选择最后一排是MySQL声明:在MySQL statment

SELECT 
MAX(`history_card`.`PART_NUMBER`) AS `PART_NUMBER`, `history_card`.`SERIAL_NUMBER`, 
MAX(`history_card`.`POSITION`) AS `POSITION`, 
MAX(`history_card`.`RELEASE_DATE_TO_AIRCRAFT`) AS `RELEASE_DATE_TO_AIRCRAFT`, 
MAX(`history_card`.`DATE_OFF_AIRCRAFT`) AS `DATE_OFF_AIRCRAFT`, 
MAX(`history_card`.`LAST_CAP_CHECKED_DATE`) AS `LAST_CAP_CHECKED_DATE`, 
MAX(`history_card`.`DUE_CAP_CHECK_DATE`) AS `DUE_CAP_CHECK_DATE`, 
MAX(`history_card`.`JOB_REMARKS`) AS `JOB_REMARKS`, 
MAX(`history_card`.`TSO`) AS `TSO`, 
MAX(`history_card`.`BO_NUMBER`) AS `BO_NUMBER`, 
MAX(`history_card`.`REPAIR_ORDER_NUMBER`) AS `REPAIR_ORDER_NUMBER`, 
MAX(`history_card`.`LAST_OVERHAULED_DATE`) AS `LAST_OVERHAULED_DATE`, 
MAX(`history_card`.`DUE_OVERHAUL_DATE`) AS `DUE_OVERHAUL_DATE`, 
MAX(`history_card`.`REFRESHER_DATE`) AS `REFRESHER_DATE`, 
MAX(`history_card`.`REFRESHER_DONE`) AS `REFRESHER_DONE`, 
MAX(`history_card`.`GRN_ISSUE_DATE`) AS `GRN_ISSUE_DATE`, 
MAX(`history_card`.`WORKSHEET`) AS `WORKSHEET`, 
MAX(`history_card`.`ADDITIONAL_ATTACHMENT`) AS `ADDITIONAL_ATTACHMENT`, 
MAX(`history_card`.`GRN`) AS `GRN` 
FROM `history_card` 
GROUP BY `history_card`.`SERIAL_NUMBER` 
HAVING (((MAX(`history_card`.`DUE_CAP_CHECK_DATE`)) BETWEEN NOW() AND DATE_SUB(NOW(), INTERVAL -60 DAY))) 
ORDER BY MAX(`history_card`.`DUE_CAP_CHECK_DATE`) DESC; 

相反MAX(),我需要选择最后一排,这意味着ID DESC已进行选择,并限制为1个的记录: ORDER BY id DESC LIMIT 1,但现在它是返回最大值,因为我从MS转换此查询,MS使用LAST()函数来获取mysql中的最后一条记录我需要一个类似的MySQL解决方案

+0

在MySQL中没有类似的功能。在ms访问'last()'函数返回结果集中的最后一条记录**忽略**任何顺序或者group by子句。您必须让我们知道如何从组中识别最新的记录。 – Shadow

+0

我需要它由最新的ID DESC选择 – Mikail

如果我理解正确的问题,这些线上的东西应该工作:

SELECT 
`history_card`.`SERIAL_NUMBER`, 
`history_card`.`PART_NUMBER` AS `PART_NUMBER`, 
`history_card`.`POSITION` AS `POSITION`, 
`history_card`.`RELEASE_DATE_TO_AIRCRAFT` AS `RELEASE_DATE_TO_AIRCRAFT`, 
`history_card`.`DATE_OFF_AIRCRAFT` AS `DATE_OFF_AIRCRAFT`, 
`history_card`.`LAST_CAP_CHECKED_DATE` AS `LAST_CAP_CHECKED_DATE`, 
`history_card`.`DUE_CAP_CHECK_DATE` AS `DUE_CAP_CHECK_DATE`, 
`history_card`.`JOB_REMARKS` AS `JOB_REMARKS`, 
`history_card`.`TSO` AS `TSO`, 
`history_card`.`BO_NUMBER` AS `BO_NUMBER`, 
`history_card`.`REPAIR_ORDER_NUMBER` AS `REPAIR_ORDER_NUMBER`, 
`history_card`.`LAST_OVERHAULED_DATE` AS `LAST_OVERHAULED_DATE`, 
`history_card`.`DUE_OVERHAUL_DATE` AS `DUE_OVERHAUL_DATE`, 
`history_card`.`REFRESHER_DATE` AS `REFRESHER_DATE`, 
`history_card`.`REFRESHER_DONE` AS `REFRESHER_DONE`, 
`history_card`.`GRN_ISSUE_DATE` AS `GRN_ISSUE_DATE`, 
`history_card`.`WORKSHEET` AS `WORKSHEET`, 
`history_card`.`ADDITIONAL_ATTACHMENT` AS `ADDITIONAL_ATTACHMENT`, 
`history_card`.`GRN` AS `GRN` 
FROM `history_card` 
JOIN 
(
SELECT MAX(`history_card`.`ID`) ID, `history_card`.`SERIAL_NUMBER` 
FROM `history_card`, 
WHERE `history_card`.`DUE_CAP_CHECK_DATE` BETWEEN NOW() AND DATE_SUB(NOW(), INTERVAL -60 DAY) 
GROUP BY `history_card`.`SERIAL_NUMBER` 
) HC 
ON `HC`.`ID`=`history_card`.`ID` 
AND `HC`.`SERIAL_NUMBER`=`history_card`.`SERIAL_NUMBER` 

SELECT TOP 1 * FROM .... ORDER BY ID DESC 

应该为您提供最后一条记录。