我有一个用户表,我需要在其中链接两行。即我希望一个用户有一个链接到另一个。
是否可以在 php 中使用 mysql 来做到这一点?
或者,如果没有,请建议我采取其他方式。
您可以进行自加入:
SELECT a.*, b.*
FROM my_table a JOIN my_table b ON a.foo = b.bar
要永久存储两条记录之间的“链接”,您可以创建关系表:
CREATE TABLE relationships (
id_a BIGINT UNSIGNED NOT NULL,
id_b BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (id_a, id_b),
FOREIGN KEY (id_a) REFERENCES my_table (id),
FOREIGN KEY (id_b) REFERENCES my_table (id)
);
查找自我加入,一个快速的谷歌应该会给你你需要的答案。
如果关系是多对多的(即,每个用户可能有到许多其他用户的链接),最好的方法是使用列出关系的第二个表。
user_links (
user_a_id int not null,
user_b_id int not null,
PRIMARY KEY(user_a_id, user_b_id)
)
您可能需要阅读Database Normalization。