查找Scala List [String]和MYSQL表列中的值之间的公共元素

时间:2013-07-28 16:37:39

标签: mysql scala anorm

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

具体来说,我的表定义如下:

朋友
 ====
friendshipId | userId | friendId

用户
 =====
userId | ...... | facebookId

目前在我的程序中,通过http GET调用Facebook图形API,我已经能够在给定访问令牌的情况下检索朋友的Facebook ID列表,并将其解析为{{1 }}

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

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

离。 IN

List[String]

然而,我找不到一个简单的干净方法来使用Anorm将其解析为Scala friendListString = ['firstId', 'secondId', ... 'lastId]。我希望将其解析为val friendIdQuery = SQL("SELECT userId FROM User WHERE facebookId IN {facebookIdList};") .on("facebookIdList" -> friendListString) ,然后遍历此列表并在每次迭代中对Friend表执行2次SQL插入。

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

0 个答案:

没有答案