小编nob*_*ody的帖子

从MySQL 5.5.3开始,如果不选择数据库,则无法使用别名引用删除?

我以前做过这样复杂的多表DELETE:

DELETE db1.t1 FROM db1.table1 AS t1, db1.table2 AS t2...
Run Code Online (Sandbox Code Playgroud)

现在升级到MySQL 5.5.5之后不再起作用,因为根据文档,因为5.5.3别名不允许在DELETE语句中使用db name进行限定.所以我应该这样做:

DELETE t1 FROM db1.table1 AS t1, db1.table2 AS t2...
Run Code Online (Sandbox Code Playgroud)

由于错误#61376并且给出错误1046(3D000)而无法正常工作:未选择数据库.

我不使用数据库,因为我的代码应该可以在未知环境中集成,并且选择db可能会破坏现有代码.

我是否应该假设在没有选择数据库的情况下不能选择数据库的DELETE语句,因为MySQL 5.5.3和我应该开始寻找一个肮脏的黑客,或者你知道一个干净的解决方案吗?


更新:

USE db1没有选择数据库时添加此查询之前(Bill Karwin的建议):

DELETE t1 FROM db1.table1 AS t1, db1.table2 AS t2...
Run Code Online (Sandbox Code Playgroud)

使它在5.5.5中工作,但在4.1和5.1中它都给出了这个错误:

ERROR 1109 (42S02): Unknown table 't1' in MULTI DELETE
Run Code Online (Sandbox Code Playgroud)

我想现在我将完全放弃使用别名,而是在任何地方使用完整的db.table名称,这使得查询变得大而且不可读但我想不出任何更好的解决方案.

mysql

6
推荐指数
1
解决办法
4090
查看次数

标签 统计

mysql ×1