从mysql表中选择最新的

时间:2010-10-07 14:26:09

标签: 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,
    `date` date DEFAULT NULL,
    `amount` int(11) DEFAULT NULL,
    `itemid` int(11) DEFAULT NULL,
    PRIMARY KEY (`purchaseid`)
) ENGINE=InnoDB;

我想根据日期和purchaseid选择最近20次购买,并加入项目表以显示这些购买的名称。如果在最近的20次购买中已经多次购买了某件商品,那么该商品只会出现一次。没有重复。我真的想不出来......也许你可以吗?谢谢!

1 个答案:

答案 0 :(得分:2)

不是吗:

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

OR

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

使用DISTINCT可以省略重复项,GROUP BY(也允许您对分组数据执行功能)可以省略重复项