0

次の 2 つのエントリがあるとします。

`id`     |    `timestamp`   |   `content`   |  `reference`
 1       |     2012-01-01   |    NEWER      |   1
 2       |     2013-01-01   |    NEWEST     |   1
 3       |     2011-01-01   |    OLD        |   2

クエリから次の結果が必要です。

`id`     |    `timestamp`   |   `content`   |  `reference`
 2       |     2013-01-01   |    NEWEST     |   1
 3       |     2011-01-01   |    OLD        |   2

ここに私がこれまでに持っているものがありますが、それは間違っています:

SELECT * FROM table GROUP BY reference

ここで正しいクエリは何でしょうか?

content参照 ID ごとに最新の部分を取得しようとしています。上記の例では、2 つの参照 ID (1 と 2) があり、それぞれの最新のエントリを取得したいと考えています。

4

3 に答える 3

1
SELECT * 
FROM (SELECT * FROM table ORDER BY timestamp desc) as sub
GROUP BY reference

クエリを拡張する場合は、パフォーマンスを向上させるために、次のように制限ロジックをサブクエリに配置します。

SELECT * 
FROM (SELECT * 
      FROM table 
      WHERE 1=1 and 2=2
      ORDER BY timestamp desc
     ) as sub
GROUP BY reference
于 2013-03-15T23:57:14.620 に答える
0

私はあなたが各参照の最新のものが欲しいと思いますか?このようなもの:

SELECT * FROM my_table
WHERE id IN (
  SELECT id FROM my_table ORDER BY timestamp DESC GROUP BY reference LIMIT 1
);
于 2013-03-15T23:57:32.733 に答える
0
select * from table where reference_id in 
    (select max(id) from table group by reference)
于 2013-03-15T23:57:50.150 に答える