我有下列表格

create table users
(
    id_user int(9) AUTO_INCREMENT primary key,
    email varchar(64)
);

create table friendships
(
    id_friendship int(9) AUTO_INCREMENT primary key,
    id_friend1 int(9),
    id_friend2 int(9),
    FOREIGN KEY (id_friend1) REFERENCES users(id_user),
    FOREIGN KEY (id_friend2) REFERENCES users(id_user),
    UNIQUE(id_friend1,id_friend2)
)

我想避免两个用户之间有两次相同的友谊。
但我仍然可以像这样把同样的友谊插入两次:
INSERT INTO friendships( id_friend1, id_friend2) VALUES (1,2)
INSERT INTO friendships( id_friend1, id_friend2) VALUES (2,1)

对我来说(1,2)和(2,1)是相等的,我想避免它。我怎样才能做到?

最佳答案

你可以按一定的顺序写那些身份证。例如,在插入之前,请确保较小的id进入左侧列,较大的id进入另一列。
在你的例子中总是像:

INSERT INTO friendships( id_friend1, id_friend2) VALUES (1,2)

永远不要像这样:
INSERT INTO friendships( id_friend1, id_friend2) VALUES (2,1)

因为id 2大于id 1。
希望有帮助!

关于mysql - MySQL友谊模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33018426/

10-13 02:05