为什么我会收到一个“未知”栏目' mysql查询的错误?

时间:2014-03-27 09:04:20

标签: mysql

以下mysql查询

select * from PrivateData.Table1 AS m 
LEFT JOIN 
PrivateData.Table2 AS i 
ON m.GUID = i.OutId;

在此查询中正常工作:

delete m,i from PrivateData.Table1 AS m 
LEFT JOIN 
PrivateData.Table2 AS i 
ON m.GUID = i.OutId;

给出错误:

错误1046(3D000):未选择数据库

为什么会这样?如何从表中删除选定的行呢?

P.S。:我不是mysql查询的专家。

3 个答案:

答案 0 :(得分:1)

我不确定这是否与这个问题有关,但值得一试。来自documentation

  

用于删除行的表列表中的别名引用   在多表删除中,除非有一个,否则使用默认数据库   明确指定。例如,如果默认数据库是db1,则   以下语句不起作用,因为不合格的别名   引用a2被解释为具有db1:

的数据库
DELETE a1, a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2
WHERE a1.id=a2.id;
  

正确匹配引用表外的表的别名   默认数据库,您必须使用明确限定引用   正确数据库的名称:

DELETE a1, db2.a2 FROM db1.t1 AS a1
INNER JOIN db2.t2 AS a2
WHERE a1.id=a2.id;

尝试明确指定数据库:

delete PrivateData.m, PrivateData.i from PrivateData.Table1 AS m 
LEFT JOIN 
PrivateData.Table2 AS i 
ON m.GUID = i.OutId;

答案 1 :(得分:0)

稍作改动

delete from m,i using PrivateData.Table1 AS m LEFT JOIN PrivateData.Table2 AS i ON m.GUID = i.OutId;

答案 2 :(得分:0)

MySQL ERROR 1046(3D000):未选择数据库:

简单的:

您需要告诉MySQL使用哪个数据库:

USE database_name;
在创建表格之前

如果数据库不存在,您需要将其创建为:

CREATE DATABASE database_name;

后跟:

USE database_name;

另一个:简短示例

当我试图查看给定数据库中的表时,我遇到了上述错误。当您连接到MySQL服务器时,除非您明确指定,否则它不会为您选择数据库。

如果您只使用,

mysql --userusername --passwordpassword
or
mysql -uusername -ppassword

然后MySQL客户端只连接到数据库服务器。在此之后,您必须指定要使用的数据库名称:

use database_name

如果您不喜欢上述方法,您可以做的只是在启动时直接指定数据库。

相同的语法是:

mysql -uusername -ppassword database_name

For ex., mysql –ugaurav –pchhabra testdb

click to sqlfiddle

look here