[英]How can I get the oldest entry (month-year) using month and year table column (int) in mysql?
我有一个表格,其中一列保留年份,另一列保留月份。 如何按son_id 获得最旧的日期(最小td_month-td_year)分组? 注意事项:table_id 可能不按顺序
CREATE TABLE mytable (
table_id INT,
father_id INT,
son_id INT,
mt_month INT,
mt_year INT);
INSERT INTO mytable VALUES
("101","11","370","12","2013"),
("102","11","370","1","2014"),
("103","11","371","2","2015"),
("105","11","371","11","2008"),
("107","11","371","12","2008"),
("108","11","372","2","2009"),
("109","11","372","3","2009"),
("111","11","372","12","2009"),
("113","11","373","1","2013"),
("115","11","373","11","2017"),
("117","11","373","11","2011"),
("119","11","373","12","2012");
如果不考虑年份,此查询将出错月份:
select son_id, min(mt_month), min(mt_year) from mytable group by son_id;
https://www.db-fiddle.com/f/v1Xty9c1SAp2PfaWCC4WvK/3
我应该使用 concat mt_month 和 mt_year 并将其转换为日期格式吗?
您需要先获得最小年份:
SELECT y.son_id,y.min_year,min(t.mt_month) AS min_month
FROM mytable t
INNER JOIN (
select son_id, min(mt_year) AS min_year from mytable group by son_id) y
ON t.son_id=y.son_id
AND t.mt_year=y.min_year
GROUP BY y.son_id,y.min_year;
如果您想要每年的第一个月,那么您需要对年份进行分组,以找到每年的最小月份,然后再进行第二个分组。
select son_id, month, year
from (
select son_id, min(mt_month) AS month, min(mt_year) as YEAR
from mytable
group by son_id,mt_year) x
group by son_id
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.