Sql 删除经理所在地为美国的员工

Sql 删除经理所在地为美国的员工,sql,Sql,如何删除经理在纽约的emp 员工表 empid name salary location 101 john 10000 newyork 102 pavan 25000 newyork 103 laxman 10000 ahmedabad 104 ram

如何删除经理在纽约的emp

员工表

empid       name           salary          location
101          john          10000           newyork
102          pavan         25000           newyork
103          laxman        10000           ahmedabad
104          ram           15000           usa
105          arjun         30000           washington
106          gopal         12000           washington
表部门列

empid       dept    managerid
101         a        102
102         a
103         a         102
104         b         105
105         b         
106         b         105
SQL Server解决方案

delete E
  from Employee M
  join department D on D.managerid = M.empid
  join Employee E on E.empid = D.empid
 where M.location = 'usa';

这将适用于某些RDBMS,但不是所有RDBMS,如果您能告诉我们您使用的是哪种RDBMS,我们可以提供更完整的解决方案

DELETE FROM employee 
 WHERE emp_id IN (SELECT emp_id FROM department 
                    WHERE manager_id IN 
                         (SELECT emp_id FROM employees WHERE location = "newyork"));

请停止重复答案,编辑原始答案以获得一些答案。@RichardTheKiwi,在几个小时内,有两个问题,要测试的数据几乎完全相同,标题和问题之间几乎没有变化。在我看来,这是一个重复的问题,因此OP需要根据评论中给出的基本建议编辑原始问题并提供更多信息。@RichardTheKiwi绝对不,别误会,我以前也做过,使用相同的数据提问。但要问完全不同的问题,并尝试遵循给出的建议。或者问两个问题,但其中一个是其他问题的延续,而不是类似的问题。@Pinky-抱歉,StackOverflow不是一个20个问题的自学教程网站。这是为有实际问题的人准备的。如何确保只删除经理所在地在纽约的人?如何删除经理在纽约的emp?问题是标题还是正文?隐马尔可夫模型。。很难。你肯定认为OP可以把“美国”改成“纽约”?!1为什么要外接?a由于WHERE子句b,第一个变为内部链接。第二个使链接不重要且可丢弃。2当e.empid=e1.empid从不匹配a never时。这是一个相同的表,相同的列。3这意味着e1.location='usa'与e.location='usa'相同,子查询中的e.empid将为其返回。4总之,您正在删除位于“美国”的所有员工a与经理b无关,使用的是错误的查询
delete from emplyoee where empid in(
select e.empid from emplyoee  e 
left outer join emplyoee   e1 on e.empid=e1.empid
left outer join department d on d.managerid=e1.empid
where e1.location='usa'
)