Mysql:使用max(date)获取最新的行
我有两张桌子,mytableA和mytableB MytableA看起来像这样Mysql:使用max(date)获取最新的行,mysql,Mysql,我有两张桌子,mytableA和mytableB MytableA看起来像这样 ColumnA|Columnb Apple|fruitstand Pear|fruitstand mytableB如下所示: ColumnA|ColumnB|ColumnC Apple|2|4/1/2012 Apple|3|4/3/2012 Apple|23|12/1/2011 Pear|1|12/22/2011 Pear|0|4/22/2012 我想要的结果是 Apple|3|4/3/2012 Pear|0|4/
ColumnA|Columnb
Apple|fruitstand
Pear|fruitstand
mytableB如下所示:
ColumnA|ColumnB|ColumnC
Apple|2|4/1/2012
Apple|3|4/3/2012
Apple|23|12/1/2011
Pear|1|12/22/2011
Pear|0|4/22/2012
我想要的结果是
Apple|3|4/3/2012
Pear|0|4/22/2012
苹果| 3 | 4/3/2012
Pear | 0 | 4/22/2012
我知道这在SQL中有效,但mysql也有类似的方法吗?我试过了。它可以在mysql上运行(不包括大量的拼写错误),但结果对我来说没有任何意义
ColumnA | ColumnB | ColumnA | ColumnB | ColumnC
Apple fruitstand Pear 0 4/22/2012
Pear fruitstand Pear 0 4/22/2012
编辑:您应该使用某种索引来标识条目
像
mytablea
mytableb
ID | fruitID | stock | date
然后
我应该做这个把戏。。。这是一个蹩脚的大型子查询:-
结果:
name | stock | date
Apple 4 4/3/2012
Pear 0 4/22/2012
当您重命名某些表/列时,是否在查询中输入错误?看起来不像是
myTableB.ColumnB
与myTableA.ColumnA
(来自您的加入)Mike,我认为您的查询仍然没有正确编辑。您当前正在使用myTableB
加入myTableB
。我想你是想加入myTableA
和myTableB
在columnA
上。我刚刚尝试了我对您的查询的解释,它返回了两行,每行都有每个水果的最大日期。你得到了什么结果?我想从mytableB中选择数据,其中mytablea和mytableB之间有1对1的关系,其中mytableB中的数据只有最大的日期问题是它只选择columnc最大的行,这意味着即使mytablea中有2行(苹果,梨)它只返回pear,因为pear有更大的日期(我做了一些大的更新;)我第一次没有得到它;)这很奇怪,我总是使用mysql,所以使用mysql很痛苦;)但我不知道如果有一个更短的解决方案。。。编辑:sry在我的结果中输入了一个错误。应该是库存3
ID | fruitID | stock | date
SELECT mytablea.name, mytableb.stock, mytableb.date FROM mytablea, mytableb,
(SELECT MAX(mytableb.date) as maxDate FROM mytableb, mytablea
WHERE mytableb.fruitID = mytablea.ID GROUP BY mytablea.ID) AS maxTB
WHERE mytableb.date = maxTB.maxDate AND mytablea.ID = mytableb.fruitID
name | stock | date
Apple 4 4/3/2012
Pear 0 4/22/2012