今天终於来到SQL的进阶篇!想要更加灵活的使用SQL,就必须要知道子查询的用法,今天就让我们来认识所谓的子查询吧~
子查询的意思其实就是在原本的查询语句里面再放上一个查询语句,被放入的语句会使用()
,用以区别outer query 和 inner query(subquery),而()
内的就是子查询。
子查询可以在 SELECT
、INSERT
、UPDATE
和 DELETE
语句中,同 =、<、>、>=、<=、IN
等运算符一起使用。
由於我们都会是以查询资料为主,因此今天就让我们来学习以SELECT
为主的子查询用法。
第一个常用的方法是结合资料的条件筛选。
当我们想要抓出某栏位大於均值的资料时可以这样写:
SELECT 栏位名1, 栏位名2, 栏位名3
FROM 表名
WHERE 栏位名2 > (SELECT AVG(栏位名2)
FROM 表名);
还有一种用法可以来查询两表之间的条件筛选:
SELECT 栏位名1, 栏位名2, 栏位名3
FROM 表1
WHERE 栏位名2 IN (SELECT DISTINCT 栏位名2
FROM 表2);
这边有一个新的用法DISTINCT
,其用意是去重,让我们可以确保每一个资料的不重复。
除了可以放在条件筛选外,我们还可以在FROM
中建立一个临时表来做查询,该怎麽做呢?
将查询的结果作为另一个表的查询来源,当我们想要预先筛选某些资料时很常用到此方法。
SELECT 栏位名1, 栏位名2, 栏位名3
FROM (SELECT 栏位名1, 栏位名2, 栏位名3
FROM 表名
WHERE 条件 );
同时也可以套入刚刚学到与WHERE
一起使用的子查询:
SELECT 栏位名1, 栏位名2, 栏位名3
FROM (SELECT 栏位名1, 栏位名2, 栏位名3
FROM 表名
WHERE 条件 )
WHERE 栏位名2 > (SELECT AVG(栏位名2)
FROM 表名);
哇~越写越长!是不是越来越有成就感了?(笑)
最後,子查询也一样可以放在SELECT里面,并传回单值,我们来看看用法~
SELECT 栏位名1, 栏位名2, 栏位名3,(SELECT (栏位名2/栏位名3) AS A
FROM 表名
WHERE A > 10)
FROM 表名;
这边与大家介绍简单和常用的3种,希望大家可以有一个初步的认识,如果想要知道更深入的用法可以参考下方的连结!
接下来我们就会进入的Python的学习,要开始写code啦!
既期待又紧张的烧脑环节,希望可以用轻松有趣的方式简单带大家回顾Python的基础用法~
参考资料:
https://sdwh.dev/posts/2021/02/SQL-Server-SubQuery/
https://chriskang028.medium.com/深入浅出-sql-的子查询-subquery-各项常用技巧-8887731717f3
https://www.mis.nsysu.edu.tw/db-book/PDF/Ch7.pdf
https://www.itread01.com/content/1562603163.html
Overview ARM Architecture 从第七代开始,分为三种配置(Profile) A...
接下来这几天来详细介绍VM并安装软路由,再利用软路由的特性在区网内部署网站和云端 unRaid的Hy...
VaultPasswordView 今日来认识 VaultPasswordView ! 他是一个在 ...
import pyautogui import pyperclip import time def ...
本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...