どのように私は、MySQLで月と年テーブルの列(int)を使用して、最も古いエントリ(月 - 年)を得ることができますか?

Rodrick:

私は一年続け列と月を保つanoher列を持つテーブルを持っています。どのように私は最も古い日付(minimun td_month-td_year)son_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

私は、連結mt_monthとmt_yearを使用して、日付形式でそれを変換する必要がありますか?

PeterHe:

あなたは最初の分の年を取得する必要があります。

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;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=15244&siteId=1