Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Laravel Eloquent nhóm theo kỷ lục gần đây nhất

Để có được hồ sơ mới nhất cho mỗi khách hàng trong số mỗi thành phố dựa trên created_at bạn có thể sử dụng tự tham gia

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

Trong SQL đơn giản, nó sẽ giống như

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

Một cách tiếp cận khác với sự tham gia tự nội sẽ là

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

Bản trình diễn




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tạo bảng hai cột trong PHP với các giá trị từ cơ sở dữ liệu?

  2. Tính tổng cho đến thời điểm nhất định - MySql

  3. Tạo MySQL sang Excel bằng PHP

  4. Python:phương pháp hay nhất và cách an toàn nhất để kết nối với MySQL và thực thi các truy vấn

  5. thủ tục trong mysql