我使用以下答案提取了一个用户名列表:
how to optimize mysql query if i have too many OR operators in my query?
现在我有另一个问题。我有一个只有2列的朋友表,请求者和伙伴都形成一个复合主键。
现在假设我使用上述SO问题为给定用户提供了一系列的facebook好友。
我如何在我的网络应用中自动成为朋友?
这意味着如果我有一个名为'usera'的用户有5个真正的朋友。我需要执行10个插入语句。
例如:friendA,usera和usera,friendA,以便friendA被反映为usera的朋友。
我知道插入选择是有效的。但不幸的是,这些朋友的用户名列表是通过一个PHP数组值使用IN子句获得的,正如我上面提问的SO成员所建议的那样。
那我该怎么办?
我应该
a)遍历名称并为每个步骤执行2个插入语句?
b)使用insert select?但是怎么做呢?
我的数据库是这样设计的:
1个表名为user with usernames,fb_uid,其中用户名是主键,fb_uid可以为空。
1个名为friends的表,其中一列名为requestor,另一列名为buddy。两列都形成一个复合键。
当您拥有以下数据时,我的网络应用程序中的2个人(usera,userb)之间建立了友谊:(usera,userb)和friends表中的(userb,usera)。
谢谢。
答案 0 :(得分:1)
您可以随时进行批量插入。
INSERT INTO friends (user_id, friend_user_id) VALUES (1, 2), (2, 1)
答案 1 :(得分:0)
我会选择INSERT SELECT,你可以找到detailed syntax here。