1

私は、現時点では、コンビニエンス ストアのマネージャーが「今週の食料品バッグ」の中身を監視するためのサイトである Web サイトをさらに開発するように割り当てられています。前の開発者は非常にずさんな仕事をしていたので、マネージャーが考えるときはいつでも:「くそー! 間違った値を入力したので、この記事を編集する必要がある」. 同じ名前で新しい記事を入力する必要があり、その後、同じ名前で価格と DATE_TIME (記事が入力された日時) が異なる 2 つの記事が作成されます。データベースは次のようになります。

________________________________________________
|___itemId___|___price___|______date_time______|
|     1      |    2.30   | 2012-01-01 00:00:00 |
|     2      |    1.50   | 2012-01-01 00:00:00 |
|     3      |    5.99   | 2012-01-01 00:00:00 |
|     4      |    0.99   | 2012-01-01 00:00:00 |
|     4      |    2.00   | 2012-01-01 00:10:00 |
|     4      |    4.99   | 2012-01-01 00:20:00 |
|     5      |   10.00   | 2012-01-01 00:00:00 |
|     6      |   39.99   | 2012-01-01 00:00:00 |

私はこのSELECT itemId, price, MAX(date_time) FROM myTableに取り組んで、次のようなすべてのアイテムの最新の行を取得しました:

________________________________________________
|___itemId___|___price___|______date_time______|
|     1      |    2.30   | 2012-01-01 00:00:00 |
|     2      |    1.50   | 2012-01-01 00:00:00 |
|     3      |    5.99   | 2012-01-01 00:00:00 |
|     4      |    4.99   | 2012-01-01 00:20:00 |
|     5      |   10.00   | 2012-01-01 00:00:00 |
|     6      |   39.99   | 2012-01-01 00:00:00 |

しかし、私が得るのは次のとおりです。

________________________________________________
|___itemId___|___price___|______date_time______|
|     4      |    4.99   | 2012-01-01 00:20:00 |

誰かがこの問題について私を助けてくれますか?

4

3 に答える 3

2

GROUP BY句を追加します。

SELECT itemId, price, MAX(date_time)
FROM myTable 
GROUP BY itemId
于 2012-05-15T09:01:35.657 に答える
1
SELECT t0.itemId, 
       t0.price, 
       t0.date_time 
FROM   myTable AS t0 
       LEFT JOIN myTable AS t1 
         ON t0.itemId = t1.itemId 
            AND t1.date_time > t0.date_time 
WHERE  t1.itemId IS NULL; 
于 2012-05-15T09:13:21.547 に答える
1

group byまたはのいずれかを使用してみてくださいdistinct

于 2012-05-15T09:03:49.480 に答える