1

table私のデータベースには以下があります。

ここに画像の説明を入力してください

上記の表からいくつかの行を返すクエリを作成しようとしています。

返されるリスト:

  1. の重複を含めることはできませんCurrency2_Id
  2. 見つかったものと重複している場合はCurrency2_Id、最新のレコードを返す必要があります

    上記の表の例では、を含む2つのレコードがありますCurrency2_Id = 7。この2つからの最新のレコードは、を持っているレコードDate = 2012-12-28です。
    したがって、最終的な結果は次のようになります。

ここに画像の説明を入力してください

これは私が試したクエリです。

SELECT Id, Currency1_Id, Rate, Currency2_Id, Date 
FROM currency_ex_rate_txn
GROUP BY Currency2_Id
ORDER BY Date DESC

しかし、私が取得する結果セットには、とのレコードの代わりにとのレコードが含まれていCurrency2_Id = 7ます。どんな助けでもいただければ幸いです。Date = 2012-12-25Currency2_Id = 7Date = 2012-12-28

4

3 に答える 3

4

これを試して:

SELECT 
  c1.Id, 
  c1.Currency1_Id, 
  c1.Rate, 
  c1.Currency2_Id, 
  c1.`Date`
FROM currency_ex_rate_txn c1
INNER JOIN
(
    SELECT Currency2_Id, MAX(`date`) LatestDate
    FROM currency_ex_rate_txn
    GROUP BY Currency2_Id
) c2  ON c1.Currency2_Id = c2.Currency2_Id
     AND c1.`date`       = c2.LatestDAte
ORDER BY c1.`Date` DESC;
于 2012-12-24T13:44:34.890 に答える
2
 SELECT Id, Currency1_Id, Rate, Currency2_Id, Date   
      FROM currency_ex_rate_txn c1 
             where Date = (select max(Date) from currency_ex_rate_txn c2 
                           where c2.Currency1_Id = c1.Currency1_Id);

ところで-予約語を列名として使用するのは良い考えではありません。

于 2012-12-24T13:47:00.553 に答える
0

これがあなたの問題を解決することを願っています
SELECT Id, Currency1_Id, Rate, Currency2_Id, DATE FROM currency_ex_rate_txn WHERE Id IN (SELECT MAX(ID) FROM currency_ex_rate_txn GROUP BY Currency1_Id)

于 2012-12-24T13:46:03.803 に答える