99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Slick 查詢(二)

2018-09-28 18:12 更新

查詢(二)

Union

兩個(gè)查詢的結(jié)果可以通過(guò) ++ (或者 unionAll ) 和 union 操作聯(lián)合起來(lái):

val q1= Album.filter(_.artistid <10)
val q2 = Album.filter(_.artistid > 15)
val unionQuery  = q1 union q2
val unionAllQuery = q1 ++ q2

union 操作會(huì)去掉重復(fù)的結(jié)果,而 unionAll 只是簡(jiǎn)單的把兩個(gè)查詢結(jié)果連接起來(lái)(通常來(lái)說(shuō)比較高效)。

Aggregation

和 SQL 一樣,Slick 也有 min,max,sum,avg 等集合操作

val q = Album.map(_.artistid)
val q1 = q.max
val q2 = q.min 
val q3 = q.avg 
val q4 = q.sum

注意:這里 q.max,min,avg,sum 返回結(jié)果類(lèi)型為 Column[Option[T]],要得到最好的 scalar 類(lèi)型的值 T,可以調(diào)用 run,得到 Option[T],然后再調(diào)用 Option 的 get 或 getOrDefault,比如:

val q = Album.map(_.artistid)
val q1 = q.max 
println(q1.run.get)

得到打印的結(jié)果:275

其它的 Aggregation 操作還有 length,exists,比如:

val q1 = Album.length
val q2 = Album.exists

分組使用 groupBy 操作,類(lèi)似于 Scala 集合類(lèi)型的 groupBy 操作:

val q= (for {
     a <- Album
     b <- Artist
     if a.artistid === b.artistid
   } yield (b.artistid,b.name)
).groupBy(_._2)
val q1 = q.map { case (name, records) =>
        (records.map(_._1).avg, name,records.length)}
q1 foreach println 

這段代碼使用兩個(gè)查詢,給出 Album 根據(jù)藝術(shù)家出的專輯的統(tǒng)計(jì),其中中間查詢 q,包含一個(gè)嵌套的 Query,目前 Scala 不支持直接查詢嵌套的 Query,因此我們需要分兩次查詢,打印出的部分結(jié)果如下:

(Some(230),Some(Aaron Copland & London Symphony Orchestra),1)
(Some(202),Some(Aaron Goldberg),1)
(Some(1),Some(AC/DC),2)
(Some(214),Some(Academy of St. Martin in the Fields & Sir Neville Marriner),1)
(Some(215),Some(Academy of St. Martin in the Fields Chamber Ensemble & Sir Neville Marriner),1)
(Some(222),Some(Academy of St. Martin in the Fields, John Birch, Sir Neville Marriner & Sylvia McNair),1)
(Some(257),Some(Academy of St. Martin in the Fields, Sir Neville Marriner & Thurston Dart),1)
(Some(2),Some(Accept),2)
(Some(260),Some(Adrian Leaper & Doreen de Feis),1)
(Some(3),Some(Aerosmith),1)
(Some(197),Some(Aisha Duo),1)
(Some(4),Some(Alanis Morissette),1)
(Some(206),Some(Alberto Turco & Nova Schola Gregoriana),1)
(Some(5),Some(Alice In Chains),1)
(Some(252),Some(Amy Winehouse),2)
...
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)