gpt4 book ai didi

MySQL:获取按另一列分组的升序日期

转载 作者:行者123 更新时间:2023-11-29 00:27:38 24 4
gpt4 key购买 nike

我有一个表,其中列中包含组件的名称和到期日期,第三列包含组件安装在哪个框架 (frame_id) 中的地址。一个框架安装了很多(或没有)组件。

我需要获取每个框架中最先过期的组件列表。每帧只有一行。例如。如果我有 50 帧,我需要每个帧的第一个过期组件的日期、名称和 ID:s。一个简单的 GROUP BY 似乎做不到。

Table1
expiry | name | frame_id | component_id
-------------------------------------------------
2013-10-03 | component_1 | 0320 | 127
2013-11-12 | component_1 | 0275 | 461
2013-11-22 | component_4 | 0320 | 011
2014-01-05 | component_2 | | 224
2014-01-16 | component_3 | 0275 | 782

列表应该是这样的:

0320 2013-10-03, expiring component: component_1 id: 127
0275 2013-11-12, expiring component: component_1 id: 461

仅列出具有第一个过期组件的过期日期的唯一框架

谢谢!

最佳答案

sql fiddle 无法正常工作,所以我将在此处添加代码。

CREATE TABLE `TableTT1` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`expiry` date NOT NULL,
`name` varchar(16) NOT NULL,
`frame_id` int(11) DEFAULT NULL,
`component_id` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;


INSERT INTO `TableTT1` (`expiry`, `name`, `frame_id`, `component_id`)
VALUES
('2013-10-03', 'component_1', 0320, 127),
('2013-11-12', 'component_1', 0275, 461),
('2013-11-22', 'component_4', 0320, 011),
('2014-01-05', 'component_2', null, 224),
('2014-01-16', 'component_3', 0275, 782);


SELECT * FROM TableTT1;

+----+------------+-------------+----------+--------------+
| ID | expiry | name | frame_id | component_id |
+----+------------+-------------+----------+--------------+
| 1 | 2013-10-03 | component_1 | 320 | 127 |
| 2 | 2013-11-12 | component_1 | 275 | 461 |
| 3 | 2013-11-22 | component_4 | 320 | 11 |
| 4 | 2014-01-05 | component_2 | NULL | 224 |
| 5 | 2014-01-16 | component_3 | 275 | 782 |
+----+------------+-------------+----------+--------------+


SELECT
MIN(expiry) AS expFirst,
GROUP_CONCAT(frame_id, ' ', expiry, ' ', name, ' ', component_id) AS Details
FROM TableTT1
GROUP BY frame_id, name
ORDER BY expFirst;

+------------+--------------------------------+
| expFirst | Details |
+------------+--------------------------------+
| 2013-10-03 | 320 2013-10-03 component_1 127 |
| 2013-11-12 | 275 2013-11-12 component_1 461 |
| 2013-11-22 | 320 2013-11-22 component_4 11 |
| 2014-01-05 | NULL |
| 2014-01-16 | 275 2014-01-16 component_3 782 |
+------------+--------------------------------+

希望这对您有所帮助。

关于MySQL:获取按另一列分组的升序日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18208505/

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