Mysql
 sql >> база данни >  >> RDS >> Mysql

Група Laravel Eloquent по последен запис

За да получите най-новия запис на клиент сред за всеки град въз основа на created_at можете да използвате самостоятелно присъединяване

DB::table('yourTable as t')
  ->select('t.*')
  ->leftJoin('yourTable as t1', function ($join) {
        $join->on('t.Customer','=','t1.Customer')
             ->where('t.City', '=', 't1.City')
             ->whereRaw(DB::raw('t.created_at < t1.created_at'));
   })
  ->whereNull('t1.id')
  ->get();

В обикновен SQL би било нещо като

select t.*
from yourTable t
left join yourTable t1
on t.Customer = t1.Customer
and t.City = t1.City
and t.created_at < t1.created_at
where t1.id is null

Демо

Друг подход със самостоятелно вътрешно присъединяване би бил

select t.*
from yourTable t
join (
    select  Customer,City,max(ID) ID
    from yourTable
    group by Customer,City
) t1
on t.Customer = t1.Customer
and t.City = t1.City
and t.ID = t1.ID

Демо




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате MySql на Mac

  2. Търсене в масив от публикации в стойност на колона, разделена със запетая

  3. MySQL - сортиране на разделен със запетая низ в колона

  4. Това истинска дълга анкета ли е?

  5. Може ли MySQL да замени няколко знака?