Красивый запрос для выбора последних строк, сгруппированных по продавцу
При наличии таблицы, состоящей из информации, связанной с продавцом, включая временные метки созданных_at, часто бывает необходимо получить только самые последние записи для каждого продавца. Эту задачу можно эффективно решить с помощью Laravel Eloquent.
Для достижения этой цели мы можем использовать подзапрос MySQL, который идентифицирует последнюю строку для каждого идентификатора продавца, используя левое соединение и сопоставление NULL. Затем этот подзапрос можно использовать вместе с Eloquent для получения нужных данных.
В SQL запрос будет выглядеть следующим образом:
select s.*
from snapshot s
left join snapshot s1 on s.seller_id = s1.seller_id
and s.created_at В переводе на Laravel Eloquent запрос будет записан следующим образом:
DB::table('snapshot as s')
->select('s.*')
->leftJoin('snapshot as s1', function ($join) {
$join->on('s.seller_id', '=', 's1.seller_id')
->whereRaw(DB::raw('s.created_at whereNull('s1.seller_id')
->get();
Этот запрос извлекает последнюю строку снимка для каждого уникального идентификатора продавца с помощью подзапроса, гарантируя, что возвращаемые результаты представляют самую актуальную информацию для каждого продавца.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3