繁体   English   中英

从同一表MYSQL链接两行

[英]Linking two rows from same table MYSQL

例如,假设我希望用户成为该网站上的朋友。

假设user_id 1和user_id 2成为朋友,我在表的朋友中添加了一行:表的朋友(user_id1 INT,user_id2 INT),该表的问题是我必须查询每列以获取结果。

行可能是:

  user_id1    user_id2
  1           2
  2           3

因此,要结识ID为2的用户,我需要同时查询两列(这会使一些查询不太实际),是否有更好的方法呢?

 ie:
  $u_id = 2;
  SELECT * FROM friends WHERE (user_id1 = $u_id OR user_id2 = $u_id)

您可以尝试另一种方法,将一个人的所有朋友存储在表中的字段朋友中,并将所有内容存储为json对象。

这样,您可以在一个查询中拥有一个人的所有朋友,并且可以通过简单的foreach查询获得个人资料。

我已经将其用于几种多对多逻辑,并且在没有链接表的情况下它可以完美地工作。

我想我更喜欢UNION ,例如:

SELECT user, friend FROM ( SELECT user_id1 AS user, user_id2 AS friend FROM friends UNION SELECT user_id2 as user, user_id1 AS friend FROM friends ) u WHERE u.user = $u_id

(当然要注意有关使用准备好的语句而不是裸变量的警告)

我会选择一种节省空间的方法,即添加两行,第一行将人A链接到人B,第二行将人B链接到人A。然后在单列上执行单个查询将检索所有朋友。

当“朋友”具有不同的特权或友谊级别时,也可以使用此设置。 因此,与B给A相比,人A可以给B更多的访问权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM