我的数据库中有table
。
我正在尝试编写一个返回上表中某些行的查询。
返回列表:
Currency2_Id
如果找到重复的Currency2_Id
,则应返回最新记录
对于上表中的示例,有两条记录具有Currency2_Id = 7
。这两个人的最新记录是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-25
的记录,而不是包含Currency2_Id = 7
和Date = 2012-12-28
的记录。
任何帮助将不胜感激。
答案 0 :(得分: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;
答案 1 :(得分: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);
BTW - 使用保留字作为列名不是一个好主意。
答案 2 :(得分: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)