在oracle的串連(join)中使用using關鍵字____oracle

來源:互聯網
上載者:User

前面我們介紹了在oralce中使用natural join,也就是自然串連。在Oracle中的join串連中使用using關鍵字,是相對於natural join的。

我們在前面提到,如果是使用natraul join,並且兩張表中如果有多個欄位是具有相同的名稱和資料類型的,那麼這些欄位都將被oracle自作主張的將他們串連起來。

但實際上我們有時候是不需要這樣來串連的。我們只需要將他們的多個具有相同的名稱和資料類型的欄位中挑選一兩個。這時候我們就需要用到using 關鍵字了。

下面是一個例子。

在oracle的例子sh的schema中的有一個表是sales,還有一個表是costs,這兩個表中都有兩個欄位分別是pro_id和time_id。我們暫且不去考慮下面串連的實際意義,僅作文法上的研究。

如果使用natural串連,預設情況下,兩個欄位將會被自然地串連在一起。

Select * from

Sales natural join costs;

Select * from

Sales join costs on Sales.prod_id = costs.prod_id and sales.time_id = costs.time_id

Select * from

Sales ,costs

Where Sales.pro_id = cost.prod_id

and sales.time_id = costs.time_id

得到的結果應該是一樣的。

如果我們使用自然串連,就沒有機會控制串連條件,oracle自作主張的將兩個相同資料類型和名稱的欄位自然地串連在一起了。

下面我們使用using關鍵字。

Select * from

Sales join costs using(prod_id)

這樣就迫使oracle使用using指出的欄位來做串連,而不是natural join串連中預設的兩個。

請注意,這裡的SQL語句沒有任何意義,只是為了說明using的用法舉了一個牽強的例子而已。

這裡還需要說明的是:

1.如果在使用using關鍵字時,而且select的結果清單項中包含了using關鍵字所指明的那個關鍵字,那麼請不要在select的結果清單項中對該關鍵字指明它屬於哪個表,例如如果使用using(prod_id),而在結果清單中要包含prod_id欄位的話,請不要寫成sales.prod_id或者costs.prod_id而應該寫成prod_id,而且也不要使用別名,就是使用例如prod_id as “產品編號”的形式。

2.僅能使用一個列名。

3.natural join關鍵字和using關鍵字是互斥的,也就是說不能同時出現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.