在本教程中,您將學習oracleinner join
子句以從表中檢索具有其他表的匹配行的行。
在關聯式資料庫中,資料分布在許多相關的表中。例如,在樣本資料庫中,銷售訂單資料主要儲存在orders
和order_items
表中。參考以下er圖結構 -
orders
表儲存訂單的標題資訊,order_items
表儲存訂單購買貨物的明細。
訂單(orders
)表通過order_id
列鏈結到order_items
表。這意味著對於orders
表中的每一行,我們都可以在order_items
表中,通過order_id
列中找到具有相同值的乙個或多個行資料。
要從兩個或多個相關表中查詢資料,請使用inner join
子句。 以下語句說明如何連線兩個表t1
和t2
。
select
*from
t1inner join t2 on join_predicate;
下面讓我們仔細地來看看上面的語句:
查詢通過基於連線謂詞組合表t1
和t2
的列值來返回結果集。它將表t1
的每一行與表t2
的行進行比較,以查詢滿足連線謂詞的所有行記錄。只要通過匹配非null
值來滿足連線謂詞,則t1
和t2
表的每對匹配行的列值就會被合併到結果集中的一行中。
1. oracle inner join示例
以下查詢使用inner join
子句從orders
表和order_items
表中檢索資料:
select
*from
orders
inner join order_items on
order_items.order_id = orders.order_id
order by
order_date desc;
在這個例子中,連線謂詞(條件)是 -
order_items.order_id = orders.order_id
查詢將orders
表中的每一行與order_items
表中的行進行比較。當兩個表中的行在order_id
列中具有相同的值時,查詢將兩個表的行中的列值合併到結果行中,並將其包含在結果集中。
所以,執行上面查詢語句,得到以下結果 -
2. 使用using子句的oracle inner join示例
除on
子句外,還可以使用using
子句指定在連線表時要測試哪些列的相等性。
下面用using
子句說明inner join
的語法。
select
*from
t1inner join t2 on( c1, c2, ... );
請注意,using
子句中列出的列(如c1
和c2
)必須在t1
和t2
表中都存在(可用)。
以下示例使用inner join
和using
子句從orders
表和order_items
表中檢索資料:
select
*from
orders
inner join order_items using( order_id )
order by
order_date desc;
執行上面示例**,得到以下結果 -
3. inner join多表連線示例
內部聯接子句可以聯接兩個以上的表。 在實踐中,應該限制連線表的數量來提高效能。 以下語句顯示如何連線三個表:
以下語句顯示如何連線三個表:orders
,order_items
和customers
, 為了保證查詢語句的效率,超過三個表連線慎用。
select
name,
order_id,
order_date,
item_id,
product_id,
quantity,
unit_price
from
orders
inner join order_items
using(order_id)
inner join customers
using(customer_id)
order by
order_date desc,
order_id desc,
item_id asc;
執行上面查詢語句,得到以下結果 -
以下示例說明如何連線四個表:orders
,order_items
,customers
和products
。參考以下查詢語句 -
select
name as customer_name,
order_id,
order_date,
item_id,
product_name,
quantity,
unit_price
from
orders
inner join order_items
using(order_id)
inner join customers
using(customer_id)
inner join products
using(product_id)
order by
order_date desc,
order_id desc,
item_id asc;
執行上面示例查詢語句,得到以下結果 -
在本教程中,您已學習如何使用oracle內部聯接從表中檢索具有其他表的匹配行的資料記錄。
Mysql中使用UNION語句進行多表連線查詢
用php編寫了幾個網頁,直接使用內建函式鏈結mysql資料庫。在實用中遇到乙個需求 有幾個內容相類似的表 存放了新聞 公告類文章 想要以某些條件做出在幾個表上的共同查詢和排序模組。在標準sql中的union語句如下 select column name s from table name1 unio...
delete 多表刪除的使用(連表刪除)
delete刪除多表資料,怎樣才能同時刪除多個關聯表的資料呢?這裡做了深入的解釋 1 delete from t1 where 條件 2delete t1 from t1 where 條件 3delete t1 from t1,t2 where 條件 4delete t1,t2 from t1,t2...
Lambda表示式多表連線的左連
在網上有很多人都在查詢lambda的例子,但是完整的例子不多,況且還有相當一部分幾乎完全不能用,linq的左連倒是挺多的,但是linq的 相對比較少,一旦遇到重複資料的時候,不容易被過濾,lambda就可以輕鬆避免這個讓人頭疼的問題。廢話不多說,看下面的例子吧。var model main from...