在所选查询中选择?

时间:2013-03-14 19:32:38

标签: mysql sql

我在mysql中有一个带有account_follow名称的表。

关注者,然后指向用户ID。

当跟随者字段指向跟随字段表示用户时,跟随一个具有特定ID的人,当跟随者指向跟随并跟随指示跟随者时,意味着跟随者和跟随者之间是友谊。我的问题是我如何选择跟随者的朋友(追随者领域)与这个架构,例如我想选择一个追随者并得到朋友,它在查询中是否可行?或者我必须在php中解决这个问题(我不应该使用)?

enter image description here

示例:

  • 1和2是朋友。
  • 2跟随1但不是朋友。
  • 1和3是朋友。

1 个答案:

答案 0 :(得分:1)

我希望我能正确理解你的问题......

无论如何,您可以通过用户ID获得逗号分隔的“跟随”列表。我假设您正在根据用户ID进行查询。

FollowedList = Convert(varchar(50),replace( 
  (SELECT distinct followed as [data()] 
  FROM account_follow a
  WHERE a.follower = b.user_id
  ORDER BY follower_id for xml path ('') ), ' ', ',') )

这是一个子查询 - 因此您可以在主查询中选择FollowedList,将该表与您的主表连接,该主表在此查询中称为“b”。

如果列表超长,您可能需要将其转换为不仅仅是varchar(50)。