0

できれば、データベース全体をダウンロードして各アイテムをスキャンせずに、このテーブルにアクセスできるMySQLクエリがありますか。

__________________________________
|   ColID   |      Timestamp      |
|___________|_____________________|
|_____2_____|_2012-08-01_12:00:00_|
|_____1_____|_2012-08-01_12:01:00_|
|_____3_____|_2012-08-01_12:02:00_|
|_____3_____|_2012-08-01_12:03:00_|
|_____2_____|_2012-08-01_12:04:00_|
|_____3_____|_2012-08-01_12:05:00_|

そして、これらの行のみを返します。

__________________________________
|   ColID   |      Timestamp      |
|___________|_____________________|
|_____1_____|_2012-08-01_12:01:00_|
|_____2_____|_2012-08-01_12:04:00_|
|_____3_____|_2012-08-01_12:05:00_|

ColID最高のそれぞれの1つだけを抽出するようにTimestamp

4

2 に答える 2

1

GROUP BYと一緒に使用MAX

SELECT   ColID, MAX(Timestamp) AS Timestamp
FROM     tbl
GROUP BY ColID

また、将来のために覚えておきたいヒントです。最大値ごとに同じテーブルにある可能性のある他の列も選択したい場合はColID、の性質上、上記のクエリで直接選択することはできませんGROUP BY。id列とdate列の両方で結合された副選択結合でクエリをラップする必要があります。

SELECT b.*
FROM   tbl a
JOIN   (
       SELECT   ColID, MAX(Timestamp) AS max_timestamp
       FROM     tbl
       GROUP BY ColID
       ) b ON a.ColID = b.ColID AND a.max_timestamp = b.Timestamp
于 2012-08-01T10:57:23.633 に答える
1

GROUP BYはい、次のように使用することでこれを達成できますMAX

SELECT ColID, MAX(Timestamp) AS max_Timestamp      
FROM my_table
GROUP BY ColID;
于 2012-08-01T10:57:31.800 に答える