Затык в том, что условие WHERE построено не верно. Вложенный запрос вернет
MAX('date')
и это дата, а сравнивается это значение с good (который как я понимаю id)
Я не знаю ваших данных, но предположу что в таблице
item_good_supplies содержатся записи с одинаковым полем
good и разной датой. В этом случае почему бы не воспользоваться
group by ?:
SELECT `good` AS `id`, /* `price`, */ MAX(`date`) as `date`
FROM `item_good_supplies`
WHERE `good` IN('23068', '21805', '23204', '22493', '21813', '21802', '23845')
GROUP BY `good`
Update:
Как справедливо указал
Rsa97 в комментарии, в этот запрос не получится впихнуть цену, т к good не является первичным ключом, а без этого необходимо указать price в group by, что приведёт к неверному результату. Если в таблице первичного ключа нет, то будет затруднительно составить запрос, который подставит корректную цену.