如果存在则删除行

时间:2012-10-12 13:14:41

标签: mysql joomla

DELETE IF EXIST `#__menu`.*
FROM `#__menu` 
LEFT JOIN `#__extensions` ON `#__extensions`.`name` = 'com_view' 
WHERE `#__menu`.`component_id` = `#__xtensions`.`extension_id`
AND `#__menu`.`alias` = 'view-sites' AND `#__menu`.`path` = 'view-sites' AND `#__menu`.`title` = 'View sites';

我的sql出了什么问题?我认为问题出在IF EXIST,但我无法弄清楚如何在行上使用它。

1 个答案:

答案 0 :(得分:13)

当您从表中删除行时,您不需要使用IF EXISTS - 您正在使用WHERE子句,因此如果它存在 - 它将被删除。

尝试将您的查询更改为:

DELETE
FROM `#__menu` 
LEFT JOIN `#__extensions` ON `#__extensions`.`name` = 'com_view' 
WHERE `#__menu`.`component_id` = `#__xtensions`.`extension_id`
AND `#__menu`.`alias` = 'view-sites' AND `#__menu`.`path` = 'view-sites' AND `#__menu`.`title` = 'View sites';

此外,您不需要指定```#__ menu .*`` (the columns) to be deleted - you'll just need DELETE FROM ...`。有关语法的详细信息,请查看here