sql >> Database teknologi >  >> RDS >> Mysql

Laravel veltalende gruppe efter seneste rekord

For at få seneste rekord pr. kunde blandt for hver by baseret på created_at du kan bruge en selvtilslutning

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();

I almindelig SQL ville det være noget i stil med

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

Demo

En anden tilgang med selv indre sammenføjning ville være

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

Demo




  1. Er det muligt at bruge en MySql brugerdefineret variabel i en .NET MySqlCommand?

  2. Hvordan kan jeg indsætte store filer i MySQL db ved hjælp af PHP?

  3. Hvordan returnerer man et array fra Java til PL/SQL?

  4. Hvordan definerer man mysqli-forbindelse i en php-fil og bruger den derefter på en anden fil?