簡體   English   中英

SQL等價於關系代數DIVISION

[英]SQL equivalent of relational algebra DIVISION

這是一個例子T(A) = RENTED(A,C) / BOATS(C)

select distinct R1.A from RENTED R1  
where not exists                     
  (select * from SAILBOAT S     
   where not exists                  
     (select * from RENTED R2        
      where R1.A = R2.A              
        and R2.C = S.C)              
   );

我的問題是,如果NOT EXISTS只返回TRUEFALSESELECT distinct R1.A如何知道返回哪些值?

例如這個jsfiddle

如果存在數字= 5,此查詢將返回數字列中的所有內容

正如wildplasser和sqlvogel所提到的,子查詢對外部查詢中的每一行都執行一次。

子查詢的結果( TRUE / FALSE )確定是否返回外部查詢中的行。 總是,外部查詢的父鍵(標識符)列將在子查詢中被引用,以檢查其在其他表中是否存在。 此引用使子查詢成為“ 相關子查詢 ”。

請看更新的小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM