日期:2014-05-16  浏览次数:20809 次

mysql 多表删除陷阱(跨库schema+别名的语法错误问题)

* 登陆用户为demo

* 连接字符串串中指定默认库是demo

* 另一个数据库(schema)是demo2,demo用户拥有demo2的所有访问权限

?

delete f,s from tableF f left join?tableS?s on f.fid=s.fid

- result=ok

?

delete f,s from?demo.tableF?f left join?demo.tableS?s on f.fid=s.fid

- result=ok

?

delete f,s from?demo2.tableF?f left join?demo2.tableS s on f.fid=s.fid

- result=error,bad sql grammar :(

?

delete?demo2.tableF,demo2.tableS?from?demo2.tableF?left join?demo2.tableS on?demo2.tableF.fid=demo2.tableS.fid

- result=ok


可见,mysql在跨库使用schema来执行多表删除时不能给表取别名。