0

MySQL クエリがあり、1 つの列に日付を含む複数の行が返されます。これが私のクエリです。

select * from (big subselect) sub

たとえば、6 行を取得し、それらの 6 行の 1 つの列に日付があり、その列は my_date と呼ばれます。同じ日ではない日付を持つ行のみを取得する方法はありますか? 例:

29.10.2012 01:51:10
29.10.2012 01:51:10
29.10.2012 01:51:10
29.10.2012 02:43:18
29.10.2012 02:43:18
29.10.2012 02:43:18

--> 6 行すべてが同じ日なので、行の 1 つだけが必要です。

29.10.2012 01:51:10
30.10.2012 01:51:10 --> different
29.10.2012 01:51:10
29.10.2012 02:43:18
29.10.2012 02:43:18
29.10.2012 02:43:18

--> 2 つの異なる日があるため、2 つの行が必要です

my_date 列は各行の唯一のものではありませんが、基準として必要です。どうすればそれができますか?

ありがとう!

4

2 に答える 2

1

これらのみを選択する必要がありMAX(my_date)ますが、他のフィールドでグループ化する必要があります。このようなもの:

select s1.*
from sub as s1
INNER JOIN
(
   SELECT MAX(my_date) AS MaxDate, SomeId
   FROM sub
   GROUP BY someId
) AS s2 ON s1.my_date = MaxDate AND s1.SomeId = s2.SomeId;
于 2013-02-22T09:07:47.787 に答える
0

次のような日付のみをグループ化できます。

SELECT * FROM sub
GROUP BY DATE_FORMAT(my_date,'%Y-%m-%d')

このSQLFiddleを参照してください

結果:

| ID |                        MY_DATE |
---------------------------------------
|  1 | October, 29 2012 01:51:10+0000 |
|  2 | October, 30 2012 01:51:10+0000 |
于 2013-02-22T09:26:16.017 に答える