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

Вземете последния ред с group by и Laravel

Проблемът е, че резултатният набор ще бъде първо групиран след това поръчах . Можете да използвате вложен избор, за да получите това, което искате.

SQL заявка:

SELECT t.* FROM (SELECT * FROM messages ORDER BY created_at DESC) t GROUP BY t.from

С Laravel:

$messages = Message::select(DB::raw('t.*'))
            ->from(DB::raw('(SELECT * FROM messages ORDER BY created_at DESC) t'))
            ->groupBy('t.from')
            ->get();

Просто трябва да добавите своя where() клаузи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо се създава GRANT USAGE при първия път, когато предоставям привилегии на потребител?

  2. PHP клас за пагинация

  3. Таблица 'mysql.user' не съществува:ГРЕШКА

  4. Времето за изчакване на заключване е превишено; опитайте да рестартирате транзакцията, въпреки че не използвам транзакция

  5. mysql - връща първата колона веднъж и всички съответни колони данни