2010-01-24 57 views
1

我的一位朋友告訴我關於聲明2,但到目前爲止我已經使用聲明1這兩個SELECT語句有什麼區別嗎?

  • 這兩個SELECT語句是否有區別?

  • 如果是這樣,它是什麼?

聲明1:

SELECT Col1 FROM Table1; 

聲明2:

SELECT Table1.Col1 FROM Table1; 
+1

你會怎麼做,如果你有兩個表,每個都包含一個名爲Col1中列? – 2010-01-24 11:43:53

回答

8

沒有區別的。

但是當你有:

Select Table1.Col1 from Table1 INNER JOIN Table2 ON (Table1.id = Table2.ref_id); 

第二條語句可能是一個更好的主意,因爲這將消除任何含糊的Col1中。在這種情況下,Col1可能是Table1或Table2中的一個字段。

實際上,如果Table2有一個名爲Col1的字段,則需要使用第二個語句。

1

當您引用單個表時沒有區別。例如,當您連接兩個或多個可能共享列名的表,例如UserId時,第二個示例的語法就變得很重要。在這種情況下,你必須指定table_name.column的名字來告訴sql處理器到底需要哪一列。所以,在你的陳述2中,指定表是多餘的。

2

只要你使用一張表,根本沒有差別。結果中的字段名稱將取自表格的字段名稱,因此表格名稱在結果中不可見。

如果你使用一個以上的表,你可能需要指定要使用的領域:

select Table1.Col1, Table2.Col1 
from Table1 
inner join Table2 on Table2.Col2 = Table1.Col2 

您也可以使用別名表名,使其更易於閱讀:

select a.Col1, b.Col1 
from Table1 as a 
inner join Table2 as b on b.Col2 = a.Col2 

或者即使沒有as關鍵字:

select a.Col1, b.Col1 
from Table1 a 
inner join Table2 b on b.Col2 = a.Col2 

您還可以使用aliase s到穿上輸出領域不同的名稱:

select Table1.Col1 as Table1Col1, Table2.Col1 as Table2Col1 
from Table1 
inner join Table2 on Table2.Col2 = Table1.Col2 

或者:

select Table1Col1 = Table1.Col1, Table2Col1 = Table2.Col1 
from Table1 
inner join Table2 on Table2.Col2 = Table1.Col2