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

MySQL中使用自定義變量 編寫偷懶的UNION示例

 更新時間:2013年07月29日 08:50:43   作者:  
以下是對MySQL中使用自定義變量,編寫一個UNION的示例進行了詳細的介紹,需要的朋友可以過來參考下

(參考自<<高性能MySQL>>)
假設有這樣的需求:寫一個UNION查詢,其第一個子查詢作為分支先執(zhí)行,如果找到了匹配的行,則不再執(zhí)行第二個分支的查詢。

一般來說,我們可以寫出這樣的UNION查詢:

復制代碼 代碼如下:

select id from users where id=123456
union all
select id from users_archived where id = 123456;

此查詢可以正常運行,但是無論在users表中是否找到記錄,都會到users_archived表中掃描一次;因此可能也會返回重復的記錄。為了減少這種情況下不必要的開銷,SQL語句可以寫成這樣:
復制代碼 代碼如下:

SELECT GREATEST(@found := -1, id) AS id, 'users' AS which_tbl
FROM users WHERE id  = 1
UNION ALL
    SELECT id, 'users_archived'
    FROM users_archived WHERE id = 1 and @found IS NULL
UNION ALL
    SELECT 1, 'reset' FROM DUAL WHERE (@found := NULL) IS NOT NLL;

上面的查詢用到了自定義變量@found,通過在結(jié)果列中做一次賦值并且放在GREATEST函數(shù)中,以避免返回額外的數(shù)據(jù)。如果第一個分支查詢結(jié)果集為NULL,那@found自然也還是NULL,因此會執(zhí)行第二個分支查詢。另外,為了不影響后面的遍歷結(jié)果,在查詢的末尾將@found重置為NULL。

另外, 返回的第二列數(shù)據(jù)是為了說明這條記錄是在users表還是在users_archived表中查詢得到的。

相關(guān)文章

  • MySQL免安裝版(zip)安裝配置詳細教程

    MySQL免安裝版(zip)安裝配置詳細教程

    這篇文章主要為大家詳細介紹了MySQL免安裝版(zip)安裝配置詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • MySQL死鎖檢查處理的正常方法

    MySQL死鎖檢查處理的正常方法

    這篇文章主要給大家介紹了關(guān)于MySQL死鎖檢查處理的正常方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • MySQL學習第二天 安裝和配置mysql winx64

    MySQL學習第二天 安裝和配置mysql winx64

    MySQL學習第二天,主要為大家詳細介紹了在Windows 64位操作系統(tǒng)下安裝和配置MySQL的具體步驟,整理一份mysql winx64安裝配置方法教程,感興趣的小伙伴們可以參考一下
    2016-05-05
  • MySQL kill不掉線程的原因

    MySQL kill不掉線程的原因

    這篇文章主要介紹了MySQL kill不掉線程的原因,幫助大家更好的理解和學習使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05
  • MySQL數(shù)據(jù)庫安全配置介紹

    MySQL數(shù)據(jù)庫安全配置介紹

    MySQL數(shù)據(jù)庫所在的主機的安全性是最首要的問題,如果主機不安全,被攻擊者控制,那么MySQL的安全性也無從談起。其次就是數(shù)據(jù)目錄和數(shù)據(jù)文件的安全性,也就是權(quán)限設置問題。因此MySQL數(shù)據(jù)庫安全配置是至關(guān)重要的。
    2011-03-03
  • 基于sql語句的一些常用語法積累總結(jié)

    基于sql語句的一些常用語法積累總結(jié)

    本篇文章是對一些常用的sql語句進行了總結(jié)與分析,需要的朋友參考下
    2013-06-06
  • MySQL綠色版設置編碼以及1067錯誤詳解

    MySQL綠色版設置編碼以及1067錯誤詳解

    這篇文章主要介紹了MySQL綠色版設置編碼,以及1067錯誤的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 實現(xiàn)mysql級聯(lián)復制的方法示例

    實現(xiàn)mysql級聯(lián)復制的方法示例

    這篇文章主要介紹了實現(xiàn)mysql級聯(lián)復制的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • MySQL數(shù)據(jù)庫重命名的快速且安全方法(3種)

    MySQL數(shù)據(jù)庫重命名的快速且安全方法(3種)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫重命名的快速且安全方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • mysql如何查詢兩個日期之間最大的連續(xù)登錄天數(shù)

    mysql如何查詢兩個日期之間最大的連續(xù)登錄天數(shù)

    在現(xiàn)在的很多網(wǎng)站中都有這樣一個功能。記錄用戶的連續(xù)登陸天數(shù),所謂的連續(xù)在線是指相鄰兩天都登錄過,不一定一直在線,但是只要有過登錄即可。這篇文章主要介紹的是利用sql語句如何查詢在兩個日期之間最大的連續(xù)登錄天數(shù),有需要的朋友們下面來一起看看吧。
    2016-10-10

最新評論