在 Slick 中向 joinLeft 添加两个条件

Adding two conditions to joinLeft in Slick

这样编译:

  val table1 = TableQuery[Table1]
  val table2 = TableQuery[Table2]

  val query = for {
    (t1, t2) <- table1 joinLeft table2 on (_.dsType === _.dsType)
  } yield (t1, t2)

编译:

  val table1 = TableQuery[Table1]
  val table2 = TableQuery[Table2]

  val query = for {
    (t1, t2) <- table1 joinLeft table2 on (_.dsType === _.dsType && _.dsSk === _.dsSk)
  } yield (t1, t2)

joinLeft 添加两个条件的语法是什么?

你可以指定向哪个table请求属性,并用运算符&&分隔:

  val table1 = TableQuery[Table1]
  val table2 = TableQuery[Table2]

    val query = for {
      (t1, t2) <- table1.joinLeft(table2).on((tab1, tab2) => tab1.dsType === tab2.dsType && tab1.dsSk === tab2.dsSk)
    } yield (t1, t2)

与此问题类似的答案是: How to add AND to the join SLICK