1

表には、同じタイトルでIDと日付がそれぞれ異なる30のレコードがあります。日付で最新のクエリを返す方法は?

テーブルは次のようになります。

Id - Title - Date
-----------------
1 - africa - 2012-11-27
2 - africa - 2012-11-26
3 - africa - 2012-11-25

Idが3で、日付で最新のレコードを返すクエリが必要です。これまでGROUPBYを使用して試したのは、Idが1のレコードのみを返すことです。どうすればよいですか。

4

2 に答える 2

6

最初のレコードを取得したいのですが、それは最近のレコードではありません。サブクエリの背後にある考え方は、タイトルと日付が一致する場合に、各タイトルの最初の日付を取得し、それ自体に対して結合することです。

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  title, MIN(DATE) minDate
            FROM tableName
            GROUP BY title
        ) b ON a.title = b.title AND
                a.date = b.maxDate
于 2012-11-25T23:11:56.590 に答える
3

グループごとの最大値が必要です:

SELECT * FROM my_table NATURAL JOIN (
  SELECT   Title, MAX(Date) Date
  FROM     my_table
  GROUP BY Title
) t

sqlfiddleでそれを参照してください。

「最新id」を最新のものではなく、最も高いもので定義すると、次のようになりDateます。

SELECT * FROM my_table NATURAL JOIN (
  SELECT   Title, MAX(id) id
  FROM     my_table
  GROUP BY Title
) t

sqlfiddleでそれを参照してください。

于 2012-11-25T23:11:57.907 に答える