1. ホーム
  2. mysql

[解決済み] 指定されたIDの最新行を取得する

2022-03-09 09:21:34

質問

下の表で 最新の行 id=1 をベースにした signin 列であって、3行すべてではない?

+----+---------------------+---------+
| id | signin              | signout |
+----+---------------------+---------+
|  1 | 2011-12-12 09:27:24 | NULL    |
|  1 | 2011-12-13 09:27:31 | NULL    |
|  1 | 2011-12-14 09:27:34 | NULL    |
|  2 | 2011-12-14 09:28:21 | NULL    |
+----+---------------------+---------+

解決方法は?

集合体を使用する MAX(signin) をidでグループ化したものです。これは、最も新しい signinid .

SELECT 
 id, 
 MAX(signin) AS most_recent_signin
FROM tbl
GROUP BY id

1つのレコード全体を取得するには INNER JOIN を返すサブクエリに対して MAX(signin) IDごとに

SELECT 
  tbl.id,
  signin,
  signout
FROM tbl
  INNER JOIN (
    SELECT id, MAX(signin) AS maxsign FROM tbl GROUP BY id
  ) ms ON tbl.id = ms.id AND signin = maxsign
WHERE tbl.id=1