如何使用多个表删除sql中的记录

时间:2012-01-07 06:36:36

标签: sql-server-2000

我在sql中遇到问题,任何人都可以帮助我 我有3张桌子 sublocation,postingdetail和employee

我必须从子位置表中删除sublocid 但首先我必须检查是否有任何员工在postsdetail表中处理该子位置,如果是,则不应删除该记录。

表子位置

sublocid
 sublocname
 mainlocid

table postingdetail

EMPID
 subloc
 mainloc

表员工

EMPID
 empname
 sublocid
 mainlocid

3 个答案:

答案 0 :(得分:0)

这样的东西
DELETE 
FROM [SUBLOCATION] 
LEFT JOIN [EMPLOYEE] ON [SUBLOCATION].[sublocid] = [EMPLOYEE].[sublocid] 
LEFT JOIN [POSTINGDETAIL] ON [POSTINGDETAIL].[empid] = [EMPLOYEE].[empid] 
WHERE empid IS NULL

这可能有效。

答案 1 :(得分:0)

我不熟悉sql-server,我自己就是MySQL用户,但我知道sql-server确实有存储过程......那就是存储过程所做的...

Here is a little tutorial on stored procedures.

答案 2 :(得分:0)

我不明白postsdetail表的含义,以及为什么我们从表employee中获取sublocid而不是postdetail,但是你的查询看起来应该是这样的:

delete sublocation
where sublocid not in
(
    select e.sublocid
    from employee e
    join postingdetail p on e.empid = p.emid
)