选择数据MYSQL

时间:2016-06-25 20:06:53

标签: mysql sql

在我的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个不同的表达式,但我认为这不是编程的好方法。

有人可以建议解决方案吗?

3 个答案:

答案 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。那个"表" tt2t2上的RECORD_ID加在一起,只能获取t2中的行。

答案 2 :(得分:0)

这个怎么样:

SELECT COMMODITY_COLUMN, VALUE, MAX(DATE) 
  FROM TABLE-2
    GROUP BY COMMODITY_COLUMN;