2014-03-27 91 views
0

以下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; 

給出了一個錯誤:

ERROR 1046(3D000):沒有數據庫中選擇

爲什麼會這樣?我怎樣才能從表中刪除選定的行呢?

P.S .:我不是mysql查詢的專家。

+0

你'delete'查詢語法是錯誤的,它必須是:'刪除從......開始。 – sp00m

+0

這個錯誤意味着你沒有選擇一個數據庫...有點明顯:)在你的連接,你錯過了'使用DATABASENAME'那裏。 – Martijn

+0

@Martijn:在我的第一個查詢中沒有使用DATABASENAME語句,它返回一個沒有錯誤的條目列表。 – Alex

回答

1

我不知道它是否是好相關的問題但值得一試。從documentation

For alias references in the list of tables from which to delete rows in a multiple-table delete, the default database is used unless one is specified explicitly. For example, if the default database is db1, the following statement does not work because the unqualified alias reference a2 is interpreted as having a database of db1:

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

To correctly match an alias that refers to a table outside the default database, you must explicitly qualify the reference with the name of the proper database:

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; 
+0

這看起來像一個合理的解釋。你的建議查詢起作用。非常感謝。 – Alex

+0

@Alex你介意將我的答案標記爲接受嗎? :) – vikingmaster

0

小修改工作

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

我得到'ERROR 1046(3D000):沒有選擇數據庫' – Alex

0

MySQL錯誤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

+0

這並不能解釋爲什麼第一個查詢沒有問題地運行,沒有先選擇數據庫。 – Alex

+0

@Alex,您的代碼正常工作看我的更新sqlfiddle .. – jmail

相關問題