加入或选择多个字段

时间:2012-12-20 10:01:27

标签: mysql

(下面的例子是假设的,但说明了这个概念)。

使用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 - 我更新了示例输出以更好地反映目标

3 个答案:

答案 0 :(得分:0)

尝试此查询::

select tbl2.userid,tbl1.moreinfo,
tbl2.someinfo,tbl2.addinfo
from tbl1 join tbl2
on (tbl1.usertoid = tbl2.userid and tbl1.userfromid = 1)

答案 1 :(得分:0)

您应该只使用下面的查询加入表格。

select u.userId, f.moreInfo, u.someInfo, u.addlInfo
from users AS u INNER JOIN friends AS f ON u.userId = f.UserToId
where f.userFrom = 1

答案 2 :(得分:0)

试试这个。经过测试和100%工作

select a.userToID, a.moreInfo, b.someInfo, b.addInfo from tbl1 a 
left outer join
tbl2 b on a.userToID = b.userId
where a.userFromID = 1;