iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0

啊啊啊啊啊啊啊啊啊 我打了老半天結果不小心按到上一頁
說好的自動儲存呢QQQQQQQQQQQQQQQQQQQ
崩潰
時間快到了... 我一千多字都沒ㄌQQ 崩潰
先上 placeholder... 乾

本篇有 3 sections:
6. Subqueries
7. Common Table Expressions
8. Set operators (Union 那些)

6. Subqueries

Subquery

  • correalted subquery:subquery 與 outer select 有關。
  • 配合 EXISTS()

之前這邊打了一些東西,但忘了QQ

Derived table

https://ithelp.ithome.com.tw/upload/images/20210929/20131394nfiChiGtZJ.png
文章提供了一些比較複雜的使用案例

EXISTS

  • EXISTS(subquery):有一個 record 就回傳 True,所以比起去 join 等效能好。
  • select 什麼不是重點,畢竟會有幾條 record 是後面 from where 等決定
  • 放在 WHERE 後面當過濾條件
  • 大部分時候,EXISTSIN
    可以用 EXISTS 就不要用 IN

例子:把沒有 order 的 customer reocrds 移入 customer_archive table

  1. 先建立新表 customers_archive,並複製「沒有 order 的 customer」過去
INSERT INTO customers_archive
SELECT * 
FROM customers
WHERE NOT EXISTS( 
   SELECT 1
   FROM
       orders
   WHERE
       orders.customernumber = customers.customernumber
);
  1. 刪除已經複製過去 archive 的 customer 紀錄
DELETE FROM customers
WHERE EXISTS( 
    SELECT 
        1
    FROM
        customers_archive a
    
    WHERE
        a.customernumber = customers.customerNumber);

7. Common Table Expressions

CTE

Recursive CTE

8. Set operators

UNION and UNION ALL

INTERSECT

MINUS


上一篇
【Day 12】MySQL Basics
下一篇
【Day 14】MySQL Basics III:Transactions / Locks
系列文
什麼都不會還敢說你是 RD 啊?畢業後的後端入職前準備31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言