Выберите самые последние из таблицы MySQL - PullRequest
2 голосов
/ 07 октября 2010

У меня есть две таблицы 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;

Я хочу выбрать 20 последних покупок на основе даты и идентификатора покупки и присоединиться к таблице товаров, чтобы показать название этих покупок. Если товар был куплен более одного раза в 20 последних покупках, он должен появиться только один раз. Нет дубликатов. Я действительно не могу понять это .. Может быть, вы можете? Спасибо!

1 Ответ

2 голосов
/ 07 октября 2010

Не будет ли:

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 (что также позволяет выполнять функции для сгруппированных данных)

...