2014-01-21 2 views
1
select user_id, user_name,created_at, count(id) from message group by user_id order by created_at desc; 

Я хочу написать sql (mysql) как это, как это сделать с помощью slick (не простой sql).Slick group by с другими полями

+0

«Быстрое введение» должно [начать работу] (http://slick.typesafe.com/doc/2.0.0/gettingstarted.html). – fotNelton

+0

@fotNelton Я это действительно прочитал. Но все же не было легко – jilen

ответ

3

Slick имитирует API коллекции Scala, где это возможно. Подумайте, как вы это сделаете в коллекциях Scala.

Messages.groupBy(_.userId).map{ case (userId,group) => 
    (userId, group.userName.max, group.createdAt.max, group.size) 
}.orderBy(_.createdAt) 

(Там в настоящее время нет .head, чтобы получить один элемент из коллекции. Использование .max в качестве запасного варианта здесь.)

Для получения сообщений объекта, обратитесь к документации, например, http://slick.typesafe.com/doc/2.0.0/code-generation.html