(下面的例子是假设的,但说明了这个概念)。
使用 MySQL,假设我有 2 个表:
userFromID userToId moreInfo
1 2 cat
1 3 dog
4 1 bear
3 4 fish
和...
userId someInfo addlInfo
1 m 32
2 f 33
3 m 25
4 f 28
我想查询用户 ID,并从两个表中获取与 user1 共享关系的所有用户的连接信息。
假设第一个表有类似的东西,alter table thatFirstTable add unique index(userFromId, userToId)
所以不会有任何重复 - 两个 id 之间的每个关系都是唯一的。
谁是“从”或“到”并不重要
因此,如果查询与用户 id 的关系,则所需的结果将是这样的:1
userId moreInfo someInfo addlInfo
2 cat f 33
3 dog m 25
4 bear f 28
谢谢。
/编辑这个“有效”,但我怀疑有更好的方法吗?
SELECT * FROM users JOIN friends ON friends.userFrom = users.id OR friends.userTo = users.id WHERE users.id != 1 AND friends.userFrom = 1 OR friends.userTo = 1
/EDIT2 - 我更新了示例输出以更好地反映目标