sql >> データベース >  >> RDS >> Mysql

最新のレコードによるLaravelEloquentグループ

    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. PostgresPlus AdvancedServer9.3Betaの新しいOracle互換機能

    2. Slony-I2.0.xを最新バージョン2.1.xにアップグレードする

    3. Apache NiFi

    4. SQLServerはVarcharを日時に変換します