У меня есть две таблицы, businesses
и items
. Я пытаюсь получить последние 9 предприятий с самыми последними обновлениями товаров на основе столбца updated_at
в таблице items
.
Я считаю, что это дает мне последние 9 бизнес-идентификаторов, которые мне нужны:
SELECT distinct business_id
FROM items
ORDER BY items.updated_at desc limit 9
Итак, я сделал это как соединение и добавил еще один столбец в выделение, он возвращает разные результаты.
SELECT b.*, i.updated_at as last_updated, i.business_id as business_id
FROM businesses AS b
INNER JOIN
(SELECT business_id, updated_at
FROM items
ORDER BY updated_at DESC
LIMIT 9) AS i
ON b.id = i.business_id
Мне определенно нужен столбец updated_at
из таблицы items
, поэтому я знаю фактическую дату. Но как только я добавляю его в оператор select с отличным, он возвращает совершенно разные результаты, поскольку я предполагаю, что строка больше не отличается, поскольку id + updated_at делает каждую строку уникальной.
Добавление схемы SQL по запросу: http://sqlfiddle.com/#!9/b44295
Если мы сделаем limit 3
в запросе к этим данным выше, он должен вернуть:
---------------------------------------
| business_name | updated_at |
---------------------------------------
| Business Two | 2018-01-22 23:38:05 |
---------------------------------------
| Business One | 2018-01-02 23:38:05 |
---------------------------------------
| Business Five | 2018-01-01 23:39:51 |
---------------------------------------
Предоставьте пример данных на sqlfiddle.com и предоставьте ожидаемый запрос на основе этих данных примера ... Трудно реконструировать запрос, не зная структуры и данных таблицы, чтобы получить рабочее решение ..
По запросу добавлены данные схемы SQLfiddle.
«Итак, я сделал это как соединение и добавил еще один столбец к выделению, он возвращает другие результаты». "ВЫБЕРИТЕ отдельный бизнес-идентификатор" против логического "ВЫБРАТЬ бизнес-идентификатор, обновленный_ из элементов" возвращает разные результаты.