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
,但我无法弄清楚如何在行上使用它。
答案 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。