2013-01-14 119 views
1

我想从基于reserveringsnr的此查询中删除所有这些结果。从多个表中删除查询

(SELECT DISTINCT res.reserveringsnr, datum, begintijd, eindtijd, aantalpersonen, klantnr, betaald, tafr.tafelnr, menr.reserveringsnr, menr.menunr, menr.uniqueid FROM reserveringen as res 
    INNER JOIN menus_regel as menr 
    ON res.reserveringsnr = menr.reserveringsnr 
    INNER JOIN tafels_regel AS tafr 
    ON res.reserveringsnr = tafr.reserveringsnr 
    WHERE res.reserveringsnr = '21') 

但是这样的事情似乎没有工作

DELETE FROM 
(SELECT DISTINCT res.reserveringsnr, datum, begintijd, eindtijd, aantalpersonen, klantnr, betaald, tafr.tafelnr, menr.reserveringsnr, menr.menunr, menr.uniqueid FROM reserveringen as res 
    INNER JOIN menus_regel as menr 
    ON res.reserveringsnr = menr.reserveringsnr 
    INNER JOIN tafels_regel AS tafr 
    ON res.reserveringsnr = tafr.reserveringsnr 
    WHERE res.reserveringsnr = '21')Delete 
WHERE Delete.reserveringsnr = '21' 

任何人都可以把我推了一下方向是正确的? 在此先感谢!

+1

当你说你想“*删除所有这些结果*”,你想删除所有的相关记录底层表还是仅来自其中的一些? – eggyal

+0

'从wheretable条件中删除(你选择那里)'?请注意,在MySQL中,您无法从您正在从中进行选择的位置更新/删除。 –

+0

一般而言,您只能从一张表中一次从子表开始删除。 – HLGEM

回答

1

以下查询将仅删除表reserveringen上的所有记录。

DELETE res 
FROM reserveringen as res 
     INNER JOIN menus_regel as menr 
      ON res.reserveringsnr = menr.reserveringsnr 
     INNER JOIN tafels_regel AS tafr 
      ON res.reserveringsnr = tafr.reserveringsnr 
WHERE res.reserveringsnr = '21' 

,但如果你想从那里reserveringsnr匹配了所有表中删除记录,那么你需要在DELETE条款

DELETE res, menr, tafr 
FROM reserveringen as res 
     INNER JOIN menus_regel as menr 
      ON res.reserveringsnr = menr.reserveringsnr 
     INNER JOIN tafels_regel AS tafr 
      ON res.reserveringsnr = tafr.reserveringsnr 
WHERE res.reserveringsnr = '21' 
+0

谢谢,作品像魅力! –

+0

使用下面的第二个查询。 –

1

指定所有的表名。如果您需要做的是在同一行,那么@ JW的答案看起来是正确的。但是,我更喜欢在性能问题的不同行中分别运行这些内容 - 如果每个表中都有大量记录,则联接所花的时间会比单个删除的时间要长。

DELETE 
FROM reserveringen 
WHERE reserveringsnr = '21'; 

DELETE 
FROM menus_regel 
WHERE reserveringsnr = '21'; 

DELETE 
FROM tafels_regel 
WHERE reserveringsnr = '21' 

这里是虽然上删除一个有用的链接:

http://dev.mysql.com/doc/refman/5.0/en/delete.html