我的一位朋友告訴我關於聲明2,但到目前爲止我已經使用聲明1。這兩個SELECT語句有什麼區別嗎?
這兩個SELECT語句是否有區別?
如果是這樣,它是什麼?
聲明1:
SELECT Col1 FROM Table1;
聲明2:
SELECT Table1.Col1 FROM Table1;
我的一位朋友告訴我關於聲明2,但到目前爲止我已經使用聲明1。這兩個SELECT語句有什麼區別嗎?
這兩個SELECT語句是否有區別?
如果是這樣,它是什麼?
聲明1:
SELECT Col1 FROM Table1;
聲明2:
SELECT Table1.Col1 FROM Table1;
沒有區別的。
但是當你有:
Select Table1.Col1 from Table1 INNER JOIN Table2 ON (Table1.id = Table2.ref_id);
第二條語句可能是一個更好的主意,因爲這將消除任何含糊的Col1中。在這種情況下,Col1可能是Table1或Table2中的一個字段。
實際上,如果Table2有一個名爲Col1的字段,則需要使用第二個語句。
當您引用單個表時沒有區別。例如,當您連接兩個或多個可能共享列名的表,例如UserId時,第二個示例的語法就變得很重要。在這種情況下,你必須指定table_name.column的名字來告訴sql處理器到底需要哪一列。所以,在你的陳述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
你會怎麼做,如果你有兩個表,每個都包含一個名爲Col1中列? – 2010-01-24 11:43:53