激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

香港云服务器
服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - MySQL中使用自定義變量 編寫偷懶的UNION示例

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

2020-01-06 15:49MYSQL教程網(wǎng) Mysql

以下是對MySQL中使用自定義變量,編寫一個UNION的示例進行了詳細的介紹,需要的朋友可以過來參考下

(參考自<<高性能MySQL>>) 
假設(shè)有這樣的需求:寫一個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表中查詢得到的。

延伸 · 閱讀

精彩推薦
568
主站蜘蛛池模板: 久久久久久久久久久高潮一区二区 | 538在线精品 | 99ri精品 | 国内毛片视频 | 激情久久一区二区 | 黄色片网页 | 看全色黄大色黄大片女图片 | 亚洲成人国产 | 精品黑人一区二区三区国语馆 | 久久国产精品二区 | 日本精品久久久一区二区三区 | 亚洲精品wwww | 色婷婷久久一区二区 | 国产一区精品在线观看 | 久久网一区二区 | 久久污| 日韩黄色在线播放 | 成人毛片免费网站 | 久久毛片免费 | 日韩一级视频 | 国产精品久久久久久久久久妇女 | xxxx69hd一hd72 | 精品在线观看一区 | 一边吃奶一边插下面 | 中文字幕在线观看亚洲 | 49vvv| 免费a级作爱片免费观看欧洲 | 国产午夜精品一区二区三区在线观看 | 九九热免费精品视频 | 国产精品久久久久av | 成人青青草 | 免费一区二区三区 | 免费一级欧美大片视频 | 91懂色 | 国产精品久久久久久久久久尿 | a网在线| 欧美一区二区黄色 | 久久久久久久久久亚洲精品 | 一级免费看片 | 欧美日韩国产综合网 | 欧美性受xxx黑人xyx性爽 |