9
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出在 ,但我不知道如何在行上使用它。

4

1 回答 1

15

当你从表中删除行时,你不需要使用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 needDELETE FROM...`。在这里查看有关语法的更多信息。

于 2012-10-12T13:16:18.377 回答