在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解决方案
答
如果我理解正确的问题,这些线上的东西应该工作:
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
应该为您提供最后一条记录。
在MySQL中没有类似的功能。在ms访问'last()'函数返回结果集中的最后一条记录**忽略**任何顺序或者group by子句。您必须让我们知道如何从组中识别最新的记录。 – Shadow
我需要它由最新的ID DESC选择 – Mikail