2017-05-04 13 views
0

私はこれを回避するのが難しいと思っています。2日間mysqlテーブルの最新の値の行を選択する方法

table: cat 
    ------------------------------------------------------------- 
    | id  | currency |bank   |created_at   | 
    ------------------------------------------------------------- 
    | 1  | a   |1   |2015-05-12 19:30:55 | 
    | 2  | a   |1   |2015-05-12 20:30:55 | 
    | 3  | b   |2   |2015-05-12 19:30:55 | 
    | 4  | s   |1   |2015-05-13 19:30:55 | 
    | 5  | b   |2   |2015-05-13 23:30:55 | 
    | 6  | b   |2   |2015-05-13 19:30:55 | 
    ---------------------------------------------------- 

私の予想結果:

私が試してみました
------------------------------------------------------------- 
    | id  | currency |bank   |created_at   | 
    ------------------------------------------------------------- 
    | 2  | a   |1   |2015-05-12 20:30:55 | 
    | 3  | b   |2   |2015-05-12 19:30:55 | 
    | 4  | s   |1   |2015-05-13 19:30:55 | 
    | 5  | b   |2   |2015-05-13 23:30:55 | 
    ---------------------------------------------------- 

:あなたは、最新の(最大の時間をしたいように見えます

SELECT p.id,p.currencyname, p.bank, date(p.created_at) as d, max(time(created_at)) as t, p.currencyname from cat as p GROUP by p.currencyname, d 
+0

期待される結果がそのように見える理由を説明してください。 –

+0

@DhruvSaxena私はちょうど特定の日付の特定の通貨のための銀行の最新のエントリをしたい –

答えて

1

をたとえば、私はそうのようなテーブルを持っている場合各カレンダー日の各通貨の値(行)が表示されます。 SQLを専門的に使用する場合、尊敬の念を払って要件を考え、正確に記述するためには時間がかかることが非常に重要です。

あなたが望む結果を得る方法は次のとおりです。

最初に、各通貨の各暦日(DATE())の最新の(MAX())行の値created_atを探したいとします。

  SELECT DATE(created_at) day, currency, MAX(created_at) created_at 
       FROM cat 
      GROUP BY DATE(created_at), currency 

あなたはその後、サブクエリとしてそれを使用し、あなたのテーブルに参加さ:それを行うには、クエリは、この(http://sqlfiddle.com/#!9/a0e097/1/0)のように見えます。結合により、表から詳細レコードが抽出されます。あなたはそれが意味をなさないように注文します(http://sqlfiddle.com/#!9/a0e097/2/0)。

SELECT cat.id, cat.currency, cat.bank, cat.created_at 
    FROM cat 
    JOIN (
       SELECT DATE(created_at) day, currency, MAX(created_at) created_at 
        FROM cat 
       GROUP BY DATE(created_at), currency 
     ) a ON cat.currency = a.currency AND cat.created_at = a.created_at 
    ORDER BY cat.id 
+0

ありがとう!!出来た –

関連する問題