MariaDB exists 学习
MariaDB exists 學習
?
????? exists對外表用loop逐條查詢,每次查詢都會查看exists的條件語句,當 exists里的條件語句能夠返回記錄行時(無論記錄行是的多少,只要能返回),條件就為真,返回當前loop到的這條記錄,反之如果exists里的條件語句不能返回記錄行,則當前loop到的這條記錄被丟棄,exists的條件就像一個bool條件,當能返回結果集則為true,不能返回結果集則為 false。
?
????? 如下:
select * from A where exists (select 1);????? 對A表的記錄逐條取出,由于子條件中的select 1永遠能返回記錄行,那么A表的所有記錄都將被加入結果集,所以與 select * from A;是一樣的。
?
????? 又如下:
select * from A where exists (select * from A where a = 0);?
????? 可以知道對A表進行loop時,檢查條件語句(select * from A where a = 0),由于a永遠不為0,所以條件語句永遠返回空集,條件永遠為false,那么A表的所有記錄都將被丟棄。
?
????? not exists與exists相反,也就是當exists條件有結果集返回時,loop到的記錄將被丟棄,否則將loop到的記錄加入結果集。
?
????? 總的來說,如果A表有n條記錄,那么exists查詢就是將這n條記錄逐條取出,然后判斷n遍exists條件。
?
?
轉載于:https://www.cnblogs.com/muyuge/p/6151996.html
總結
以上是生活随笔為你收集整理的MariaDB exists 学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 午盘最后几分钟拉升目的
- 下一篇: 判断js变量是否定义,