欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL的子查詢中FROM和EXISTS子句的使用教程

 更新時間:2015年12月17日 09:53:37   投稿:goldensun  
這篇文章主要介紹了MySQL的子查詢中FROM和EXISTS子句的使用教程,子查詢是MySQL入門學習中的基礎知識,需要的朋友可以參考下

FROM 子查詢
FROM 子句中的子查詢
MySQL FROM 子查詢是指 FROM 的子句作為子查詢語句,主查詢再到子查詢結果中獲取需要的數(shù)據(jù)。FROM 子查詢語法如下:

SELECT ... FROM (subquery) AS name ...

子查詢會生成一個臨時表,由于 FROM 子句中的每個表必須有一個名稱,因此 AS name 是必須的。FROM 子查詢也稱為衍生數(shù)據(jù)表子查詢。
FROM 子查詢實例
table1:

s1 s2
1  5
2  12
3  20

FROM 子查詢 SQL 如下:
SELECT s1,s2 FROM (SELECT s1, s2*2 AS s2 FROM table1) AS temp WHERE s1 > 1
查詢返回結果如下所示:

s1 s2
2 24
3 40

提示
MySQL FROM 子句中的子查詢可以返回標量、列、行或表,但不能為有關聯(lián)的子查詢。

MySQL 子查詢 EXISTS 和 NOT EXISTS
MySQL EXISTS 和 NOT EXISTS 子查詢
MySQL EXISTS 和 NOT EXISTS 子查詢語法如下:

SELECT ... FROM table WHERE EXISTS (subquery)

該語法可以理解為:將主查詢的數(shù)據(jù),放到子查詢中做條件驗證,根據(jù)驗證結果(TRUE 或 FALSE)來決定主查詢的數(shù)據(jù)結果是否得以保留。
MySQL EXISTS 子查詢實例
下面以實際的例子來理解 EXISTS 子查詢。下面是原始的數(shù)據(jù)表:
article 文章表:

2015121795225188.png (641×126)

user 用戶表:

2015121795243080.png (643×104)

我們要查出 article 表中的數(shù)據(jù),但要求 uid 必須在 user 表中存在。SQL 語句如下:

SELECT * FROM article WHERE EXISTS (SELECT * FROM user WHERE article.uid = user.uid)

返回查詢結果如下:

2015121795301254.png (645×107)

從語句執(zhí)行結果可以看出,article 表中第 4 條記錄沒有被保留,原因就是該條記錄的數(shù)據(jù)在子查詢中返回的結果是 FALSE 。
當上面的 SQL 使用 NOT EXISTS 時,查詢的結果就是 article 表中 uid 不存在于 user 表中的數(shù)據(jù)記錄。
提示
EXISTS (subquery) 只返回 TRUE 或 FALSE,因此子查詢中的 SELECT * 也可以是 SELECT 1 或其他,官方說法是實際執(zhí)行時會忽略 SELECT 清單,因此沒有區(qū)別。
EXISTS 子查詢的實際執(zhí)行過程可能經(jīng)過了優(yōu)化而不是我們理解上的逐條對比,如果擔憂效率問題,可進行實際檢驗以確定是否有效率問題。
EXISTS 子查詢往往也可以用條件表達式、其他子查詢或者 JOIN 來替代,何種最優(yōu)需要具體問題具體分析。

相關文章

  • MYSQL隨機抽取查詢 MySQL Order By Rand()效率問題

    MYSQL隨機抽取查詢 MySQL Order By Rand()效率問題

    MYSQL隨機抽取查詢:MySQL Order By Rand()效率問題一直是開發(fā)人員的常見問題,俺們不是DBA,沒有那么牛B,所只能慢慢研究咯,最近由于項目問題,需要大概研究了一下MYSQL的隨機抽取實現(xiàn)方法
    2011-11-11
  • Node-Red實現(xiàn)MySQL數(shù)據(jù)庫連接的方法

    Node-Red實現(xiàn)MySQL數(shù)據(jù)庫連接的方法

    這篇文章主要介紹了Node-Red實現(xiàn)MySQL數(shù)據(jù)庫連接的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • mysql導入導出命令解析

    mysql導入導出命令解析

    這篇文章主要介紹了mysql導入導出命令解析,有需要的朋友可以參考下
    2015-08-08
  • mysql查看死鎖與去除死鎖示例詳解

    mysql查看死鎖與去除死鎖示例詳解

    這篇文章主要給大家介紹了關于mysql查看死鎖與去除死鎖的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Mysql多表操作方法講解教程

    Mysql多表操作方法講解教程

    這篇文章主要介紹了MySQL數(shù)據(jù)庫的多表操作,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-12-12
  • Mysql8創(chuàng)建用戶及賦權操作實戰(zhàn)記錄

    Mysql8創(chuàng)建用戶及賦權操作實戰(zhàn)記錄

    一般在開發(fā)中,我們需要新建一個賬戶,并賦予某個數(shù)據(jù)庫的訪問權限,下面這篇文章主要給大家介紹了關于Mysql8創(chuàng)建用戶及賦權操作的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Centos5.5中安裝Mysql5.5過程分享

    Centos5.5中安裝Mysql5.5過程分享

    這篇文章主要介紹了Centos5.5中安裝Mysql5.5過程分享,本文使用編譯方法安裝MySQL,并給出了一些可能遇到的錯誤和解決方法,需要的朋友可以參考下
    2015-01-01
  • MySQL存儲引擎基礎知識

    MySQL存儲引擎基礎知識

    本篇文章主要給大家講述了MySQL存儲引擎相關基礎知識,有助于大家對MySQL存儲引擎有更好的理解,學習下吧。
    2017-12-12
  • MySQL日志文件詳解

    MySQL日志文件詳解

    這篇文章主要介紹了MySQL日志文件詳解,本文分別講解了錯誤日志、二進制日志、通用查詢?nèi)罩?、慢查詢?nèi)罩?、Innodb的在線redo日志、更新日志等日志類型和作用介紹,需要的朋友可以參考下
    2015-07-07
  • 查看修改mysql編碼方式讓它支持中文(gbk或者utf8)

    查看修改mysql編碼方式讓它支持中文(gbk或者utf8)

    MySQL的默認編碼是Latin1,不支持中文,要支持中文需要把數(shù)據(jù)庫的默認編碼修改為gbk或者utf8,真的是很麻煩啊,不過本文提供了詳細的修改教程,感興趣的你可不要走開啊,希望本文對你有所幫助
    2013-01-01

最新評論