MySQL で最新のレコードを選択
このチュートリアルでは、MySQL で最新のレコードを選択する方法を探ることを目的としています。
ユーザーの行動を理解したり、時系列データセットに対して探索的データ分析を実行したりする場合、エントリのタイムスタンプに基づいてデータをフィルタリングすることが非常に重要になります。このエントリのタイムスタンプは、特定の形式で MySQL に保存されます。
この形式は、yyyy-mm-dd HH:MM:SS
として説明できます。ほとんどの企業では、データパケットに関連する問題をデバッグしようとしているときに、テーブル内の最新のレコードの 1つにアクセスする必要があります。
MySQL は、MAX()
メソッドを使用してこの操作を実行するのに役立ちます。この方法がどのように機能するかを理解しましょう。
始める前に、テーブル student_details
を作成してダミーデータセットを作成する必要があります。
-- create the table Student_Registration
CREATE TABLE Student_Registration
(
sample_id int NOT NULL,
sample_name VARCHAR(20),
sample_ts TIMESTAMP
);
-- insert rows to the table Student_Registration
INSERT INTO Student_Registration
(
sample_id, sample_name, sample_ts
)VALUES
(1, 'Preet S', '2016-01-01 00:00:01'),
(2, 'Dhruv M', '2017-01-01 00:00:01'),
(3, 'Peter P', '2018-01-01 00:00:01'),
(4, 'Martin G', '2019-01-01 00:00:01');
上記のクエリは、行が sample_id
、sample_name
、登録タイムスタンプが sample_ts
のテーブルを作成します。データのエントリを表示するには、次のコードを使用します。
SELECT * FROM Student_Registration;
出力:
sample_id sample_name sample_ts
1 Preet S 2016-01-01 00:00:01
2 Dhruv M 2017-01-01 00:00:01
3 Peter P 2018-01-01 00:00:01
4 Martin G 2019-01-01 00:00:01
最新の学生登録の sample_ts
を取得してみましょう。これは、sample_ts
列を使用して実現できます。
MySQL で最新のレコードを選択
次のクエリは、sample_ts
列に最新のエントリがある学生を取得するのに役立ちます。
SELECT
MAX(sample_ts) AS most_recent_registration
FROM Student_Registration;
出力:
most_recent_registration
2019-01-01 00:00:01
したがって、上記のコードブロックでわかるように、sample_ts
列を使用して最新のタイムスタンプエントリにアクセスできます。この手法の代わりに、MySQL で ORDER BY DESC
句を使用し、値を 1
に制限することもできます。
次のクエリを使用すると、より深く理解できます。
SELECT *
FROM Student_Registration
ORDER BY sample_ts DESC
LIMIT 1;
上記のコードは、最新のレコードに関連付けられているすべての列をフェッチします。
出力:
sample_id sample_name sample_ts
4 Martin G 2019-01-01 00:00:01
したがって、タイムスタンプ列の横にある MAX
関数または ORDER BY DESC
句を使用すると、MySQL のテーブルから最新のレコードを効率的に選択できます。