0

GROUP BY QIDの場合、最新の行のみが返されるようにするにはどうすればよいですか?

ID, QID, VALUE, TIMESTAMP
45,1,Male,1362044759
58,1,Female,1362045122
59,1,Male,1362045149
60,1,Female,1362045153
82,1,Female,1362045863
83,1,Female,1362045887
92,1,Male,1362046012
101,1,Female, 1362046401

SELECT ID, QID, VALUE, TIMESTAMP FROM table GROUP BY ID

...最初の行を返します。LIMIT 1を単純に実行することはできません。これは単なる例であり、テーブルには多くのQIDがあり、それらはすべてグループ化されています。

ありがとう。

4

3 に答える 3

1

ここでは、それぞれの「最新の」行が必要だと想定していますQID。通常は、派生テーブルサブクエリを使用してそれぞれQIDの最新のTIMESTAMP値を取得し、それに参加します。

SELECT ...
FROM myTable AS t
INNER JOIN (SELECT QID, MAX(`TIMESTAMP`) AS MaxT FROM myTable GROUP BY QID) l
    ON t.QID = l.QID AND l.maxT = t.`TIMESTAMP`

TIMESTAMPこれは、時間の経過とともに列が増加することも前提としています。

于 2013-02-28T10:54:44.297 に答える
0

グループ化されたデータを抽出するには、「GROUP_CONCAT」を使用できます。

SELECT GROUP_CONCAT(ID ORDER BY TIMESTAMP DESC) AS latest_id
于 2013-02-28T10:58:16.233 に答える
0

最新のレコードを返したい場合:

SELECT *
FROM TBL
ORDER BY `TIMESTAMP` DESC
LIMIT 1;

それ以外の場合、QIDの各グループの最新のレコードを取得する場合は、同じ問題を最適なソリューションで処理するこのStackOverflowPostを確認してください。

于 2013-02-28T10:58:33.230 に答える