我有2个表SQL插入,使所有用户的朋友与所有
1) USERS - List of all users
2) FRIENDS - List of users who are friends with each other
我要让所有的用户朋友与所有其他用户。所以基本上我需要在朋友表中插入所有用户信息。
USERS表列
1) id - user id of the user
2) name - user name
朋友表列
1) user_id
2) friend_id
问:
我想通过一个把来自用户的表中的一个的用户,做批量插入到FRIENDS表中对于不是朋友的用户。
我知道我可以用JOIN逐个检查并做一些事情。但我不认为这是简单而正确的做法。需要来自专家的一些意见。
注意: user_id和friend_id中的值可以互换,它仍然表示它们是朋友。不应该有像(1,2)和(2,1)这样的组合。
SQL小提琴:http://sqlfiddle.com/#!2/07b2d9/1
对于所提供的小提琴,所有用户都必须做出的朋友为其他用户忽略谁已经是朋友了。
为什么你会想要一个完整的朋友图?你有什么理由不先放弃朋友表,只是添加所有组合? – andy 2014-09-20 17:32:17
好主意。 +1。但即使在这种情况下,我们也不需要SQL来执行该操作。而且,无论何时新用户加入,它都会强制一次又一次地删除整个表。 – Purus 2014-09-20 17:40:48
如果您省略cdhowie的答案中的where子句,您会得到完全相同的SQL。我的第一个问题是为什么你需要一个包含所有连接的表格,因为它没有包含任何有用的信息。 – andy 2014-09-20 17:43:09