2017-05-06 49 views
-3

我執行的SQL語句:SQL - 未知表X

SELECT worker.* 
FROM worker w JOIN 
    contract c 
    ON w.Worker_ID = c.Worker_ID 
ORDER BY c.Holidays DESC 
LIMIT 1; 

結果:未知表 '工人'

如果我使用別名來代替,那麼它的工作原理:

SELECT w.* 
FROM worker w JOIN 
    contract c 
    ON w.Worker_ID = c.Worker_ID 
ORDER BY c.Holidays DESC 
LIMIT 1; 

結果:

Worker_ID Name 
2   Klink 

爲什麼它只在我使用別名時才起作用?

SQL小提琴:http://sqlfiddle.com/#!9/a840b/47

+0

爲什麼你在第一個查詢中設置Alias w並不使用它? – DeeJay

+1

別名在整個查詢中「重命名」表。如果同一個參考文獻名稱不止一個,就會令人困惑。 –

+1

別名的整點,就是使用別名。如果你不想使用它,你爲什麼要走私它? – Kritner

回答

1

通知的Alisas酒店w

SELECT worker.* 
FROM worker w JOIN 
    contract c 
    ON w.Worker_ID = c.Worker_ID 
ORDER BY c.Holidays DESC 
LIMIT 1; 

由於該表是別名,在這種情況下,你必須使用別名。

+0

好吧,這意味着如果我使用別名,那麼我只能通過這個別名訪問該列,而不是它的原始名稱? – Black

+2

在這種情況下,該表是別名。假設你想自己加入桌子。 'select worker。* from worker w1 join worker w2 on w1.Worker_ID = w2.Worker_ID' ..'worker。*'是不明確的。這就是您必須使用別名的原因。 – Candide