如果存在则删除行

Kin*_*Kin 6 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';
Run Code Online (Sandbox Code Playgroud)

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

new*_*rey 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';
Run Code Online (Sandbox Code Playgroud)

此外,您不需要指定```#__menu .*`` (the columns) to be deleted - you'll just needDELETE FROM ...`.有关语法的更多信息,请查看此处.