2011-04-20 145 views
-1
select name from movie as d 
where d.mov = movie.mov; 

。 錯誤1054(42S22):未知列'd.mov in'子句' 。 我確定列mov存在。執行以下mysql查詢時出錯

,但是這是真的

select name from movie as d 
where d.mov = mov; 
+0

'moive'?錯別字通常不能很好地工作。 – geekosaur 2011-04-20 17:36:19

+0

你想做什麼?爲什麼要給該表一個別名,然後使用相關名稱和不相關名稱來比較一列與自身? – 2011-04-20 17:36:58

+0

你爲什麼要爲一個表別名並將相同的列值與自己進行比較。該查詢是否正常工作將始終返回所有行。 – 2011-04-20 17:37:33

回答

3

當您爲某個表定義別名時,您總是使用必須使用該別名。

第一個查詢不起作用,因爲一旦您定義了別名,該表現在是只有可以使用該別名訪問。

第二個查詢是可行的,因爲只要列名是唯一的,就不必使用表/別名前綴。

+0

雖然是奇怪的錯誤訊息。爲什麼會抱怨'd.mov'?肯定'movie.mov'是問題。 – 2011-04-20 17:39:46

+1

@馬丁:好點。我其實忽略了那個細節。但考慮到第一個查詢已經包含一個拼寫錯誤,也許還有更多的錯誤消息並不屬於查詢。 – 2011-04-20 17:41:19

0

「電影」 或 「影視」? (簡明,準確,但對於答案太短)

0

如果

select name from moive as d 
where d.mov = mov; 

是真的,比我想你應該寫

select name from moive as d 
where d.mov = moive.mov;