我有两个mysql表Item Rate Table
和Items Table
现在我想从Item Rate Table
获取基于最大日期的项目最新费率。
我使用以下查询,但它适用于7-01-0001
,7-01-0002
,7-01-0003
项。如何解决此问题。
SELECT
`itemstable`.`SALE_CODE`,
`itemstable`.`ITEM_NAME`,
`itemratetable`.`ITEM_RATE`
FROM
`itemstable`
INNER JOIN `itemratetable`
ON (
`itemstable`.`SALE_CODE` = `itemratetable`.`ITEM_CODE`
)
WHERE `itemratetable`.`RATE_DATE` =
(SELECT
MAX(RATE_DATE)
FROM
`itemratetable`) ;
ITEM_CODE RATE_DATE ITEM_RATE
--------- ---------- -----------
7-01-0001 2014-10-20 130
7-01-0002 2014-10-20 150
7-01-0002 2014-12-20 200
7-01-0003 2014-10-20 100
7-01-0003 2014-12-20 150
7-01-0004 2014-10-20 56
7-01-0004 2014-12-20 100
7-01-0005 2014-10-20 305
SALE_CODE ITEM_NAME
--------- ---------
7-01-0001 Item 1
7-01-0002 Item 2
7-01-0003 Item 3
7-01-0004 Item 4
7-01-0005 Item 5
SALE_CODE ITEM_NAME RATE_DATE ITEM_RATE
--------- --------- ----------- -----------
7-01-0001 Item 1 2014-10-20 130
7-01-0002 Item 2 2014-12-20 200
7-01-0003 Item 3 2014-12-20 150
7-01-0004 Item 4 2014-12-20 100
7-01-0005 Item 5 2014-10-20 305
答案 0 :(得分:1)
这是标准的GROUPWISE MAX查询。标准解决方案如下。为简洁起见,我省略了另一张表。你应该能够弄明白......
SELECT x.*
FROM item_rate x
JOIN
( SELECT item_code
, MAX(rate_date) max_date
FROM item_rate
GROUP
BY item_code
) y
ON y.item_code = x.item_code
AND y.max_date = x.rate_date;
答案 1 :(得分:0)
MAX函数应该在查询的顶部使用,而不是在WHERE子句中使用:
SELECT i.sale_code, i.item_name, MAX(r.rate_date), r.item_rate FROM
itemstable i INNER JOIN itemratetable r ON i.sale_code = r.item_code
GROUP BY i.sale_code, i.item_name, r.item_rate;