[解決済み] ユーザーごとに最新の日付の行を選択する
2022-04-29 22:37:37
質問
ユーザーのチェックインとアウトの時間を表すテーブル("lms_attendance")があるのですが、以下のような感じです。
id user time io (enum)
1 9 1370931202 out
2 9 1370931664 out
3 6 1370932128 out
4 12 1370932128 out
5 12 1370933037 in
このテーブルのビューを作成して、ユーザーIDごとに最新のレコードのみを出力し、"in" または "out" の値を与えるようなものを作成しようとしています。
id user time io
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in
今のところ、かなり近づいていますが、viewsがサブクエリを受け付けないことに気づき、かなり難しくなっています。一番近いクエリは:
select
`lms_attendance`.`id` AS `id`,
`lms_attendance`.`user` AS `user`,
max(`lms_attendance`.`time`) AS `time`,
`lms_attendance`.`io` AS `io`
from `lms_attendance`
group by
`lms_attendance`.`user`,
`lms_attendance`.`io`
しかし、私が得るものは、:
id user time io
3 6 1370932128 out
1 9 1370931664 out
5 12 1370933037 in
4 12 1370932128 out
これは近いですが、完璧ではありません。最後のgroup byはあってはならないものですが、これがないと、最新の時刻を返しますが、相対的なIO値ではありません。
何かアイデアはありますか? ありがとうございます。
解決方法は?
クエリを実行します。
SELECT t1.*
FROM lms_attendance t1
WHERE t1.time = (SELECT MAX(t2.time)
FROM lms_attendance t2
WHERE t2.user = t1.user)
結果
| ID | USER | TIME | IO |
--------------------------------
| 2 | 9 | 1370931664 | out |
| 3 | 6 | 1370932128 | out |
| 5 | 12 | 1370933037 | in |
もし、あるユーザーが同じ最大時間を持つ複数のレコードを持っている場合、上記のクエリは複数のレコードを返します。もし、1ユーザーにつき1レコードだけ欲しい場合は、以下のクエリーを使用してください。
SELECT t1.*
FROM lms_attendance t1
WHERE t1.id = (SELECT t2.id
FROM lms_attendance t2
WHERE t2.user = t1.user
ORDER BY t2.id DESC
LIMIT 1)
関連
-
ジョイントインデックスのためのmysqlの条件とインデックスが失敗するための条件
-
MySQLのLike演算子に関する詳細
-
MySQLのNULLについて解説した記事
-
MySQL サービスとデータベース管理
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
群関数解の無効な使用
-
[解決済み] なぜ SQLAlchemy の count() は生のクエリよりずっと遅いのでしょうか?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのLike演算子に関する詳細
-
MySQLインストールチュートリアル(Windows用)詳細
-
[解決済み】マルチパート識別子をバインドできない
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
PostMan レポート エラー: 接続 ECONNREFUSED 127.0.0.1:port number
-
[解決済み] 指定されたIDの最新行を取得する
-
[解決済み] Ubuntu linux上で動作するリモートMySQLサーバーを再起動する方法は?
-
[解決済み] SQLを使用してSUMとSUBTRACTを行うには?
-
[解決済み] SQLでカラムに最大値を持つ行のみを選択する [重複]。
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?