mysql - 在 Slick 中表达 SQL IF ELSE
问题描述
例如,我如何在 Slick 中表达这个 SQL?
如果 id 存在于另一个表中,则选择列为 true / false
join(Services).on(_.mid === _.id).map {
case (m, s) => (m.id, m.name, ???).mapTo[SomeClass]
}
解决方案
尝试
import slick.jdbc.PostgresProfile.api._
case class Member(id: Int, name: String, phone: String)
class MemberTable(tag: Tag) extends Table[Member](tag, "members") {
def id = column[Int]("id", O.PrimaryKey)
def name = column[String]("name")
def phone = column[String]("phone")
def * = (id, name, phone) <> (Member.tupled, Member.unapply)
}
case class Service(mid: Int, profile: Int, lastSeen: String)
class ServiceTable(tag: Tag) extends Table[Service](tag, "services") {
def mid = column[Int]("mid", O.PrimaryKey)
def profile = column[Int]("profile")
def lastSeen = column[String]("last_seen")
def * = (mid, profile, lastSeen) <> (Service.tupled, Service.unapply)
}
val members = TableQuery[MemberTable]
val services = TableQuery[ServiceTable]
case class SomeClass(mid: Int, name: String, services: Boolean)
members.joinLeft(services).on(_.id === _.mid).map {
case (m, s) => (m.id, m.name, s.isDefined).mapTo[SomeClass]
}
推荐阅读
- visual-studio - 使用 ML64 编译和创建 exe 文件
- c++ - C ++将解析器的结果放入数组
- r - 根据落入范围 columnA:columnB 的值在数据框中查找相应的行
- r - 从字符串匹配中总结
- kubernetes - IBM Cloud Kubernetes - 无法获取新的刷新令牌
- azure - 是否可以将配置迁移工具与 Azure Devops 一起使用?动态 365
- angularjs - 为什么在遵循 Angular AD 官方指南时会出现此错误?
- html - 如何在输入类型“提交”中添加材质图标
- javascript - 如何在选中复选框时切换文本并在未选中任何内容时隐藏
- runnable - AUTOSAR:建议直接从Scheduler调用一个runnable?