tft每日頭條

 > 圖文

 > mybatis查詢列表數量

mybatis查詢列表數量

圖文 更新时间:2024-07-23 18:11:06
MyBatis框架中的exists用法
  • exists用法
  • 使用示例
  • 總結

mybatis查詢列表數量(詳細解析exists的使用)1

exists用法
  • exists:如果括号内子查詢語句返回結果不為空,說明where條件成立,就會執行主SQL語句如果括号内子查詢語句返回結果為空,說明where條件不成立,就不會執行主SQL語句
  • not exists: 與exists相反如果括号内子查詢語句結果為空,說明表示where條件成立,就會執行主SQL語句如果括号内子查詢語句結果不為空,說明表示where條件不成立,就不會執行主SQL語句exists與in的區别:in隻能返回一個字段值exists強調是否返回結果集,不要求知道返回什麼,exists允許返回多個字段exists的效率一般優于in:使用exists,Oracle首先會檢查主查詢,然後運行子查詢直到找到第一個匹配項使用in子查詢時,首先會執行子查詢,并将獲得的結果列表放在一個加了索引的臨時表中exists的效率優于distinct:當提交一對多表信息查詢時,就可以避免在select中使用distinct因為RDBMS核心模塊将在子查詢的條件一旦滿足後,立即返回結果,所以自帶去重.以下兩組SQL語句等價:SELECT distinct dept_no, dept_name from dept D, EMP E WHERE D.dept_no = E.dept_no; SELECT dept_no, dept_name from dept D WHERE EXISTS (SELECT 1 from emp E WHERE E.dept_no = D.dept_no); exists适合外表的結果集小的情況in适合内外表都很大的情況

mybatis查詢列表數量(詳細解析exists的使用)2

使用示例
  • exists:

SELECT ID,NAME FROM A WHERE EXISTS(SELECT * FROM B WHERE A.ID = B.AID)

  • SQL語句分解:

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1) --->SELECT * FROM B WHERE B.AID=1有值返回TRUE所以有數據 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2) --->SELECT * FROM B WHERE B.AID=2有值返回TRUE所以有數據 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3) --->SELECT * FROM B WHERE B.AID=3無值返回TRUE所以沒有數據

  • 上面SQL語句等價于:

SELECT id, name from A WHERE id in (select aid from B)

總結
  • SQL中in, not in, exists, not exists的區别:in:确定給定的值是否與子查詢或者列表中的值匹配in關鍵字選擇與列表中任意一個值匹配的行in關鍵字之後的項目必須用逗号隔開,并且括在括号中not in:通過not in關鍵字引入的子查詢也返回一列零值或更多值exists:指定一個子查詢,檢測行的存在相當于兩個集合的交集exists後面可以是整句的查詢語句 ,in後面隻能是單列查詢語句not exists:相當于兩個集合的差集existsnot exists返回的結果類型是Boolean:如果子查詢包含行:exists返回TRUEnot exists返回FALSE

mybatis查詢列表數量(詳細解析exists的使用)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved