Mysql Query仅适用于Alias

时间:2015-06-02 21:04:10

标签: mysql

我想知道为什么这个查询有效:

DELETE `temp` FROM `tagged` `temp`
INNER JOIN `tags`
ON
(`tags`.`id` = `temp`.`tag_id` AND `temp`.`user_id` = '1' AND `tags`.`name` = 'tag1')
OR
(`tags`.`id` = `temp`.`tag_id` AND `temp`.`user_id` = '1' AND `tags`.`name` = 'tag2');

这个查询,唯一的区别是没有temp作为tagged表的别名。

DELETE FROM `tagged`
INNER JOIN `tags`
ON
(`tags`.`id` = `tagged`.`tag_id` AND `tagged`.`user_id` = '1' AND `tags`.`name` = 'tag1')
OR
(`tags`.`id` = `tagged`.`tag_id` AND `tagged`.`user_id` = '1' AND `tags`.`name` = 'tag2');

第二个查询只会产生语法错误。另外,请重新编写可行的查询,并且不需要别名。

语法错误:

  

语法错误或访问冲突:1064 SQL语法中出错;检查与您的MySQL服务器版本相对应的手册,以便在tags附近使用正确的语法tagsid = tagged。{{ 1}}和tag_idtagged =''在第1行(SQL:DELETE FROM user_id INNER JOIN tagged ON({{1} }。tags = tagsidtaggedtag_id =' 2'和tagged。{{1 }} =' tag1')或(user_idtags = nametagsidtagged = ' 2'和tag_idtagged =' tag2');)

1 个答案:

答案 0 :(得分:0)

您只需要在DELETE语句之后添加要删除的表名。

DELETE `tagged` FROM `tagged`
INNER JOIN `tags`
ON
(`tags`.`id` = `tagged`.`tag_id` AND `tagged`.`user_id` = '1' AND `tags`.`name` = 'tag1')
OR
(`tags`.`id` = `tagged`.`tag_id` AND `tagged`.`user_id` = '1' AND `tags`.`name` = 'tag2');
相关问题