使用不同条件的关系删除MySQL

使用不同条件的关系删除MySQL,mysql,foreign-keys,relational-database,Mysql,Foreign Keys,Relational Database,我需要用观察者的电子邮件和被观察者的电子邮件删除给定的行 比如说 我收到电子邮件:“kacper@niemczyk.pl“和”elo@elo.pl“我必须将这些人从下表中删除。在本例中,删除UserID=10且FollowerID=13的行 我知道可以通过电子邮件找到一个ID,然后将其删除,但我也知道通过关系可以更快地完成,但我不知道如何操作。将此作为参考: +--------+---------------------+--------+------------+---------------

我需要用观察者的电子邮件和被观察者的电子邮件删除给定的行

比如说

我收到电子邮件:“kacper@niemczyk.pl“和”elo@elo.pl“我必须将这些人从下表中删除。在本例中,删除UserID=10且FollowerID=13的行


我知道可以通过电子邮件找到一个ID,然后将其删除,但我也知道通过关系可以更快地完成,但我不知道如何操作。

将此作为参考:

+--------+---------------------+--------+------------+--------------------------------------------------------------+-------+------------+------+--------+-------+
| UserID | email               | name   | surname    | password                                                     | place | birthDay   | male | female | admin |
+--------+---------------------+--------+------------+--------------------------------------------------------------+-------+------------+------+--------+-------+
|     10 | elo@elo.pl          | elo    | elo        | $2b$12$JPdUjCFv2mtoG3b2Dx0v1.D5089S4wUsg0aS21joLhlrzb1f4X3sW | stg   | 2000-12-09 |    1 |      0 |     1 |
|     11 | kacper@wp.pl        | kacper | kacper     | $2b$12$mlKWmIwdmj8Q0Py36H3m1O2REqYD9VBacmmk8jiogBIfrUmKy4XpG | stg   | 0000-00-00 |    1 |      0 |     0 |
|     12 | filip@galikowski.pl | filip  | galikowski | $2b$12$7cxOXVs/tHytGE/j0nA/s.wdxOherYlJf18F3EA/elvUblEN99pLy | stg   | 0000-00-00 |    1 |      0 |     0 |
|     13 | kacper@niemczyk.pl  | kacper | niemczyk   | $2b$12$YoSDXFc/t.jr5K8EFrY16OH8jom6kylCqvdFL7FfL2rdrO6hVzxCa | stg   | 0000-00-00 |    1 |      0 |     0 |
+--------+---------------------+--------+------------+--------------------------------------------------------------+-------+------------+------+--------+-------+

+--------+------------+
| UserID | FollowerID |
+--------+------------+
|     12 |         13 |
|     10 |         13 |
+--------+------------+
编辑有关评论的内容

要以类似的方式将记录添加到
追随者
,请使用:

create table users (id int, name varchar(10));
insert into users values (1, 'Kacper'),(2, 'Krzysztof'), (3, 'Kuba');
create table followers (userid int, followerid int);
insert into followers values (1, 2), (1, 3);
--now we want to delete from followers records, where Krzysztof follows Kacper
delete from followers
where exists (select 1 from users
              where id = followers.userid and name = 'Kacper')--followed user
  and exists (select 1 from users
              where id = followers.followerid and name = 'Krzysztof');--follower

你的问题没有多大意义?你可以通过ID删除,这是一个相当标准的方式还是做事?你能详细介绍一下你的其他方法吗?回答你的问题谢谢你的帮助!我几乎能理解整个查询,我只需要看几次就可以自己使用它。你能帮我以同样的方式添加到表中吗?(完全相同,而不是删除,但添加)谢谢你,它的工作!问题是,与删除相比,我不理解添加。。。你能从理论上给我解释一下吗?你把表
users
和它自己连接起来,得到所有的用户组合。然后在
where
子句中指定用户的姓名(本例中为电子邮件),筛选出需要添加的用户。这有点复杂,但我会尝试在实践中准确理解。非常感谢你的帮助!
insert into followers
select u1.id, u2.id from users u1
cross join users u2
where u1.name = 'Kacper' --followed user
  and u2.name = 'Krzysztof' --follower