从mysql表中选择最近的

从mysql表中选择最近的,mysql,select,join,group-by,Mysql,Select,Join,Group By,我有两个mysql表: 包含可购买物品的物品: CREATE TABLE `item` ( `itemid` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, PRIMARY KEY (`itemid`) ) ENGINE=InnoDB; 包含所有采购的采购: CREATE TABLE `purchase` ( `purchaseid` int(11) NOT NULL AUTO_INCREMENT,

我有两个mysql表:

包含可购买物品的物品:

CREATE TABLE `item` (
`itemid` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`itemid`)
) ENGINE=InnoDB;
包含所有采购的采购:

CREATE TABLE `purchase` (
    `purchaseid` int(11) NOT NULL AUTO_INCREMENT,
    `date` date DEFAULT NULL,
    `amount` int(11) DEFAULT NULL,
    `itemid` int(11) DEFAULT NULL,
    PRIMARY KEY (`purchaseid`)
) ENGINE=InnoDB;
我想根据日期和purchaseid选择最近20次购买,并加入item表以显示这些购买的名称。如果一件物品在最近20次购买中被购买了不止一次,它应该只显示一次。没有重复的。我真的搞不懂。。也许你可以?谢谢

是不是:

SELECT `name`
from `item` join `purchase` using(`itemid`)
group by `itemid` order by `date` desc limit 20

使用
DISTINCT
可以省略重复项,就像使用
groupby
一样(也可以对分组数据执行功能)

SELECT DISTINCT `name`
from `item` join `purchase` using(`itemid`)
order by `date` desc limit 20