gpt4 book ai didi

MySQL 选择最新日期 - 单表

转载 作者:行者123 更新时间:2023-11-29 07:47:34 29 4
gpt4 key购买 nike

我有一个如下所示的表,我想获取每个 loc_id 的最新 insp_date 的 ID (insp_id)。

create table insp (
insp_id int (10),
loc_id int (11),
insp_type varchar (150),
insp_date date ,
insp_active tinyint (2),
insp_created timestamp ,
insp_modified timestamp
);

我尝试了 Select latest record in table (datetime field) 中的“IN”策略和其他人,但这给了我双倍,因为一个 loc_id 的最新日期可能是另一个的非最新日期:

SELECT insp_id, loc_id, insp_active, insp_date
FROM insp
WHERE insp_active = 1
AND insp_date IN(SELECT MAX(insp_date) FROM insp WHERE insp_active = 1 GROUP BY loc_id)
ORDER BY loc_id ASC, insp_date DESC;

我设置了一个 SQL Fiddle,但添加各种 GROUP BY 和 MAX 似乎没有得到它。我觉得我需要加入子查询或类似的东西,但目前不确定。

http://sqlfiddle.com/#!2/f95e0/1

谢谢,安德鲁

最佳答案

您需要检索每个位置的 MAX 日期,然后检索该日期的 MAX insp_id

查询 1:

SELECT insp.loc_id, max(insp.insp_id)
FROM insp
INNER JOIN
(SELECT loc_id, max(insp_date) as insp_date
FROM insp
WHERE insp_active = 1
GROUP BY loc_id) AS mdate ON mdate.loc_id = insp.loc_id AND
mdate.insp_date = insp.insp_date
WHERE insp_active = 1
GROUP BY insp.loc_id

Results :

| LOC_ID | MAX(INSP.INSP_ID) |
|--------|-------------------|
| 1 | 1 |
| 2 | 40 |
| 3 | 48 |
| 4 | 37 |
| 5 | 49 |
| 6 | 39 |
| 7 | 50 |
| 8 | 46 |

更新:

如果特定日期只有一项事件检查,并且这始终是最新的事件检查,您可以执行以下操作:

SELECT insp.loc_id, insp.insp_id
FROM insp
INNER JOIN
(SELECT loc_id, max(insp_date) as insp_date
FROM insp
WHERE insp_active = 1
GROUP BY loc_id) AS mdate ON mdate.loc_id = insp.loc_id AND
mdate.insp_date = insp.insp_date
WHERE insp_active = 1

关于MySQL 选择最新日期 - 单表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27321892/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com