gpt4 book ai didi

MySQL:查询在指定日期之前设置的不同字段的最新条目

转载 作者:行者123 更新时间:2023-11-28 23:29:58 28 4
gpt4 key购买 nike

这是场景。

我有一个表“组件”:

| id | sys_id  | name  | serial_num | model_num | date       |
+----+---------+-------+------------+-----------+------------+
| 4 | CZMIL01 | comp1 | 0101 | ABAB | 2010-02-25 |
| 3 | CZMIL01 | comp2 | 0011 | AABB | 2010-02-03 |
| 8 | CZMIL02 | comp2 | 0001 | AAAB | 2010-02-03 |
| 5 | CZMIL02 | comp1 | 0010 | AABA | 2010-01-14 |
| 6 | CZMIL02 | comp2 | 0011 | AABB | 2010-01-14 |
| 7 | CZMIL02 | comp3 | 0100 | ABAA | 2010-01-14 |
| 1 | CZMIL01 | comp1 | 0000 | AAAA | 2010-01-01 |
| 2 | CZMIL01 | comp2 | 0001 | AAAB | 2010-01-01 |
+----+---------+-------+------------+-----------+------------+

其中“日期”指定何时将组件放入系统“sys_id”。系统中一次只有给定名称的一个组成部分;因此,如果两个条目具有相同的组件名称,则日期较晚的条目将替换日期较早的条目。

所需的解决方案:

我需要一个查询来告诉我在给定日期给定系统中的哪些组件。

例如,如果我指定 CZMIL01 和 2010-02-05,结果将是:

| id | sys_id  | name  | serial_num | model_num | date       |
+----+---------+-------+------------+-----------+------------+
| 1 | CZMIL01 | comp1 | 0000 | AAAA | 2010-01-01 |
| 3 | CZMIL01 | comp2 | 0011 | AABB | 2010-02-03 |

最佳答案

这是一种方法:

select c.*
from components c
where c.date = (select max(c2.date)
from components c2
where c2.sys_id = c.sys_id and
c2.serial_num = c.serial_num and
c2.date <= '2010-02-05'
);

您可以在外部 where 中为特定的 sys_id 添加 where 条件。

关于MySQL:查询在指定日期之前设置的不同字段的最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37664390/

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