0

実行すると次のような結果が得られるクエリがあります

speciaid         | title     | date
one              | xxx       | 2013-10-03 02:13:54
one              | xxx       | 2013-10-03 03:13:54
two              | yyy       | 2013-10-02 02:13:54

を追加するGROUP BY specialidとグループ化されますが、取得する日付は古い日付であり、このような「日付」列の新しい日付ではありません

speciaid         | title     | date
one              | xxx       | 2013-10-03 02:13:54      // old date selected for entry one
two              | yyy       | 2013-10-02 02:13:54

そして、私はそれが欲しい

speciaid         | title     | date
one              | xxx       | 2013-10-03 03:13:54   // new date for entry one needed
two              | yyy       | 2013-10-02 02:13:54

多くのグループ化を試しましたが、同じ結果が得られました。誰かがクエリの group by ステートメントを手伝ってくれたら、とてもありがたいです。

4

3 に答える 3

0

グループあたり最大 n のソリューションを探しています。

通常、この方法で解決されます(質問に情報が不足しているため、結果が表であると仮定します)。

オプション1:

SELECT * FROM t JOIN (
  SELECT title, max(`date`) `date` FROM t
  GROUP BY title
) s ON t.title = s.title AND t.`date` = s.`date`

オプション 2:

SELECT t1.* FROM t t1
LEFT JOIN t t2
ON t1.title = t2.title AND t1.`date` < t2.`date`
WHERE t2.`date` IS NULL

作業フィドル: http://sqlfiddle.com/#!2/76f2d3/1

于 2013-10-04T05:19:10.747 に答える
0

グループ化された列から最初/最後の日付を取得する場合は、max() または min() グループ化関数を使用する必要があります。

SELECT speciaid, title, MAX(`date`) FROM table GROUP BY title;
于 2013-10-04T05:20:48.187 に答える