0

在我的 Scala 应用程序中,我试图确定字符串列表中的哪些值存在于 MySQL 数据库中表的列之一中。

具体来说,我有这样定义的表:

朋友
====
友谊ID | 用户名 | 朋友ID

用户
=====用户
ID | ... | 脸书ID

目前在我的程序中,通过对 Facebook 图形 API 的 httpGET调用,我已经能够在给定访问令牌的情况下检索朋友的 Facebook ID 列表,并将其解析为List[String].

让我感到困惑的是,如何对照我的用户表中的“”列交叉检查List[String]Facebook ID 。facebookId一旦我检索到两者之间的共同元素(具有匹配 FB ID 的行的 User.userIds),我希望为每个共同元素在我的 Friend 表中插入两行:1 行具有当前用户的 userId 和朋友 User.userId,和另一排交换了两个。这象征着两人之间的“友谊”。

最初,我尝试执行SELECTwithIN子句,其中friendListString 是我List[String]的 ID 的逗号分隔字符串列表:

前任。friendListString = ['firstId', 'secondId', ... 'lastId]

val friendIdQuery = SQL("SELECT userId FROM User WHERE facebookId IN {facebookIdList};")
                        .on("facebookIdList" -> friendListString)

但是,我找不到List[String]使用 Anorm 将其解析为 Scala 的简单干净方法。我希望将其解析为List[String],然后遍历此列表并在每次迭代中对 Friend 表执行 2 次 SQL 插入。

即使我能够解析出 List[String],这对我来说听起来也很昂贵,因为必须遍历整个朋友 ID 列表。所以我在想一定有一些复杂的嵌套 SQL 查询可以调用来实现所有这些?我的 SQL 技能很生疏:(

4

0 回答 0