在我的MySQL数据库中有2个表:
Table-1:
COMMODITY_COLUMN
CommodityType1
CommodityType2
..............
CommodityType20
Table-2
RECORD_ID COMMODITY_COLUMN VALUE DATE
1 CommodityType6 156 15/08/96
2 CommodityType13 56 25/12/16
3 CommodityType5 756 15/02/05
. CommodityType4 584
. CommodityType13 48
. CommodityType2 78
. CommodityType2 8
. CommodityType6 55
. CommodityType14 7
. CommodityType4 88
. ..........................
128 CommodityType5 756 19/04/72
129 CommodityType2 999 25/04/85
表-1列“COMMODITY_COLUMN”在表-2中用作外键。 我要做的是从表-2中收集每20个商品类型的最后值。
我尝试过不同的MYSQL表达式,例如:
SELECT TABLE-2.VALUE FROM TABLE-2 WHERE COMMODITY_COLUMN IN (SELECT COMMODITY_COLUMN FROM TABLE-1) ORDER BY RECORD_ID DESC LIMIT 1
但我没有成功。我可以为每20个商品代码创建20个不同的表达式,但我认为这不是编程的好方法。
有人可以建议解决方案吗?
答案 0 :(得分:2)
一种方法是相关子查询:
SELECT t2.*
FROM TABLE2 t2
WHERE t2.record_id = (SELECT MAX(tt2.record_id)
FROM table2 tt2
WHERE tt2.COMMODITY_COLUMN = t2.COMMODITY_COLUMN
) ;
我不认为table1
与查询有任何关系。
答案 1 :(得分:1)
SELECT
t2.RECORD_ID,
t2.COMMODITY_COLUMN,
t2.VALUE,
t2.`DATE`
FROM
`TABLE-2` t2
JOIN (SELECT
MAX(RECORD_ID) AS RECORD_ID
FROM
`TABLE-2`
GROUP BY
COMMODITY_COLUMN) AS tt2 ON t2.RECORD_ID = tt2.RECORD_ID
根据您尝试过的查询,我假设RECORD_ID
是自动递增的主键,而且是" last"你的意思是为该商品插入最后一行。
只是为了解释发生了什么:SELECT
中的JOIN
语句获取了每个RECORD_ID
的最后/最大COMMODITY_COLUMN
。那个"表" tt2
与t2
上的RECORD_ID
加在一起,只能获取t2
中的行。
答案 2 :(得分:0)
这个怎么样:
SELECT COMMODITY_COLUMN, VALUE, MAX(DATE)
FROM TABLE-2
GROUP BY COMMODITY_COLUMN;