關於merge into 和關聯子查詢問題

2021-05-18 02:23:19 字數 755 閱讀 3706

進oracle專案組面試時問到了這個問題.

b表與a表表結構一樣,無則插入有則更新如何用一條sql語句完成.

使用merge into.

例如有a和b倆個表,表結構如下:

ids varchar2(32),

names varchar2(32)

merge into a a                --目標表

using b b                 --源表

on a.ids = b.ids   --如果a表的a.ids和b表的b.ids一樣,就讀when matched then裡的.

when matched then

update set a.names = b.names  --注意此處不需要表名,自動把b插入到a.

when not matched then

insert (a.ids, a.names) values(b.ids, b.names)  --注意此處語法,不需要into和表名.

關聯子查詢問題

select * from a a where exists(select * from b b where a.ids = b.ids)

注意這時是用外面a表的ids欄位和裡面b表的ids進行匹配.

假如a表有很多ids,那麼此時sql執行器不知道用哪個ids好,所以會依次用a的每個ids與b.ids比較.

所以實際上執行了count(a表) + 1次sql語句.

請注意,這是關聯子查詢.

mysql關聯子查詢 MySQL 關聯子查詢

mysql 關聯子查詢 關聯子查詢是指乙個包含對錶的引用的子查詢,該錶也顯示在外部查詢中。通俗一點來講,就是子查詢引用到了主查詢的資料資料。以乙個實際的例子來理解關聯子查詢 article 文章表 aidtitlecontentuid 文章1文章1正文內容.文章2文章2正文內容.文章3文章3正文內容...

子查詢和關聯查詢 效率

msdn對子查詢的定義是這樣的 可以將乙個查詢的結果用作另乙個查詢的輸入。可以將子查詢的結果用作使用 in 函式 exists 運算子或 from 子句的語句。一條好的值得稱讚的規則是盡量用連線代替所有的子查詢。優化器有時可以自動將子查詢 扁平化 並且用常規或外連線代替。但那樣也不總是有效。明確的連...

關於檔案關聯

檔案關聯就是某種型別的檔案和某個應用程式關聯起來。比如txt檔案用記事本開啟。要實現這個要腫麼辦呢?首先是登錄檔的hkey classes root根鍵下找到txt子項,該子項有預設和contenttype兩個值項,預設的資料值是txtfile。然後在登錄檔的hkey classes root根鍵下...