MySql加入同一个表?

时间:2013-01-03 17:09:19

标签: php mysql

之前可能已经提出这个问题,我只是不知道搜索它的方法。我认为这应该是基本的,但我无法弄明白。

我有一个朋友表,格式如下:

  

ID风湿fromid
  1 45 50
  2 50 45
  3 46 45
  4 45 46
  5 40 45

登录的成员是$member_number ...在这种情况下是“45”。

"toid""fromid"字段对应于成员ID。如果成员“45”已登录,我将如何编写SELECT查询以获取他们所有成员的所有成员?

为了让他们成为朋友,必须有往复的朋友行。例如,在上文中,成员45和50是朋友,因为他们的朋友记录往返(在行1和2中)。如第3行和第4行所示,45和46也是如此。但是,40和45不是朋友,因为没有往复行。

因此Select语句的结果应该是...... 50,46。

2 个答案:

答案 0 :(得分:3)

您可以使用两个选择的并集,例如

select fromid from <table> where toid = $member_number
union
select toid from <table> where fromid = $member_number

union具有过滤重复项的额外好处,因此在您的示例50中不会出现两次。

确保将toid和fromid都编入索引(单独或作为另一个索引的最左侧部分),此查询将快速闪现。

此外,不需要id列(在我看来),你把一个主键放在toid和fromid上,这足以识别这个表中的任何行。

可以在SQLFiddle

看到一个例子

答案 1 :(得分:0)

以下帖子回答了这个问题的答案......同样的问题/问题。 我找到了答案:stackoverflow.com/questions/6259998/ ....