亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2013年07月29日 08:50:43   作者:  
以下是對(duì)MySQL中使用自定義變量,編寫(xiě)一個(gè)UNION的示例進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下

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

一般來(lái)說(shuō),我們可以寫(xiě)出這樣的UNION查詢(xún):

復(fù)制代碼 代碼如下:

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

此查詢(xún)可以正常運(yùn)行,但是無(wú)論在users表中是否找到記錄,都會(huì)到users_archived表中掃描一次;因此可能也會(huì)返回重復(fù)的記錄。為了減少這種情況下不必要的開(kāi)銷(xiāo),SQL語(yǔ)句可以寫(xiě)成這樣:
復(fù)制代碼 代碼如下:

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;

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

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

相關(guān)文章

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

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

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

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

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

    MySQL學(xué)習(xí)第二天 安裝和配置mysql winx64

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

    MySQL kill不掉線(xiàn)程的原因

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

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

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

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

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

    MySQL綠色版設(shè)置編碼以及1067錯(cuò)誤詳解

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

    實(shí)現(xiàn)mysql級(jí)聯(lián)復(fù)制的方法示例

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

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

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

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

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

最新評(píng)論