Sql 光滑文档中的错误示例?

Sql 光滑文档中的错误示例?,sql,slick,Sql,Slick,不是我今天注意力不集中,就是Slick的入门文档设计得不好。 因此,在查询/联合部分,他们有以下代码片段: val q1 = coffees.filter(_.price < 8.0) val q2 = coffees.filter(_.price > 9.0) val unionQuery = q1 union q2 // compiles to SQL (simplified): // select x8."COF_NAME", x8."SUP_ID", x8."PRICE

不是我今天注意力不集中,就是Slick的入门文档设计得不好。 因此,在查询/联合部分,他们有以下代码片段:

val q1 = coffees.filter(_.price < 8.0)
val q2 = coffees.filter(_.price > 9.0)

val unionQuery = q1 union q2
// compiles to SQL (simplified):
//   select x8."COF_NAME", x8."SUP_ID", x8."PRICE", x8."SALES", x8."TOTAL"
//     from "COFFEES" x8
//     where x8."PRICE" < 8.0
//   union select x9."COF_NAME", x9."SUP_ID", x9."PRICE", x9."SALES", x9."TOTAL"
//     from "COFFEES" x9
//     where x9."PRICE" > 9.0

val unionAllQuery = q1 ++ q2
// compiles to SQL (simplified):
//   select x8."COF_NAME", x8."SUP_ID", x8."PRICE", x8."SALES", x8."TOTAL"
//     from "COFFEES" x8
//     where x8."PRICE" < 8.0
//   union all select x9."COF_NAME", x9."SUP_ID", x9."PRICE", x9."SALES", x9."TOTAL"
//     from "COFFEES" x9
//     where x9."PRICE" > 9.0
val q1=coffees.filter(价格<8.0)
val q2=咖啡.过滤器(u.price>9.0)
val unionQuery=q1 union q2
//编译为SQL(简化):
//选择x8.“COF_NAME”,x8.“SUP_ID”,x8.“PRICE”,x8.“SALES”,x8.“TOTAL”
//来自“咖啡”x8
//其中x8.“价格”<8.0
//联合选择x9.“COF_NAME”,x9.“SUP_ID”,x9.“PRICE”,x9.“SALES”,x9.“TOTAL”
//来自“咖啡”x9
//其中x9.“价格”>9.0
val unionAllQuery=q1++q2
//编译为SQL(简化):
//选择x8.“COF_NAME”,x8.“SUP_ID”,x8.“PRICE”,x8.“SALES”,x8.“TOTAL”
//来自“咖啡”x8
//其中x8.“价格”<8.0
//联合所有人选择x9.“COF_NAME”,x9.“SUP_ID”,x9.“PRICE”,x9.“SALES”,x9.“TOTAL”
//来自“咖啡”x9
//其中x9.“价格”>9.0
然后他们说:
不像union那样过滤出重复的值,++简单地连接单个查询的结果,这通常更有效。


我认为
q1
q2
不会产生重复项。所以,要么是他们提供了错误的查询示例来说明
union
++
之间的真正区别,要么是我没有得到什么重要的东西。你们能帮忙吗?

在这种特殊情况下,由于
q1
q2
之间没有交叉点,所以没有重复项。也许将查询更改为

val q1 = coffees.filter(_.price < 8.0)
val q2 = coffees.filter(_.price < 9.0)
val q1=coffees.filter(价格<8.0)
val q2=咖啡过滤器(价格<9.0)
这是一个更好的例子。无论如何,底线是:

  • q1联合q2
    转换为SQL
    union
  • q1++q2
    转换为SQL
    UNION ALL