MySQL:如何根据特定ID删除连接表中的两行?

htrmnn0y  于 2022-12-10  发布在  Mysql
关注(0)|答案(2)|浏览(698)

我有一个MySQL连接表USER_CONNECTIONS,它用以下列MapUSERS表:USER_FROM和USER_TO,这两个列都是USERS表中的外键。USER_FROM和USER_TO都是主键,因此像(1,2)和(1,2)这样的模式永远不能重复。

USER_CONNECTIONS表。

create table user_connections (
  user_from int,
  user_to int,
  primary key(user_from, user_to)
  );
  
  insert into user_connections(user_from, user_to) values(1, 2);
  insert into user_connections(user_from, user_to) values(2, 1);
  insert into user_connections(user_from, user_to) values(67, 1);
  insert into user_connections(user_from, user_to) values(68, 1);
  insert into user_connections(user_from, user_to) values(69, 1);
  insert into user_connections(user_from, user_to) values(70, 1);

插入后是什么样子
查询#1

select * from user_connections;

User_From|User_To

1|2
2|1
67|1
68|1
69|1
70|1
View on DB Fiddle
我的问题是,如何使用一个基于ID 2的查询删除模式(1,2)和(2,1)。另外,如果我假设有另一个模式,如(67,2)和(2,67),我将如何删除这些模式?
提前谢谢您。

i34xakig

i34xakig1#

我找到解决方案了。我只需要使用WHERE IN,如下所示:

DELETE FROM user_connections
WHERE (user_from, user_to) in ((1, 2), (2, 1))
ngynwnxp

ngynwnxp2#

假设您有一个USER表,其ID链接到您在这里描述的两列。这样的请求可以完成这项工作:

DELETE uc
FROM user_connections uc
INNER JOIN user u
    ON u.id = uc.user_from
    OR u.id = uc.user_to
WHERE u.id = 2;

相关问题