話不多說先來看看表結構: 顯而易見 Pid 存放的 Person 的 id ;下麵重點(奇葩需求!!!!) 我需要向表一(Person)里插入幾條數據(...)這時候不會對錶二做任何操作。 需求:查詢表一(Person)條件是表二(Person_Visison)里有沒有表一(Person)的 id ...
話不多說先來看看表結構:
顯而易見 Pid 存放的 Person 的 id ;下麵重點(奇葩需求!!!!)
我需要向表一(Person)里插入幾條數據(...)這時候不會對錶二做任何操作。
需求:查詢表一(Person)條件是表二(Person_Visison)里有沒有表一(Person)的 id 如果有則不返回 結果集,沒有則返回。
上代碼: (註:這是我封好的js主要看SQL語句)
1 select('SELECT * FROM Person WHERE NOT EXISTS(SELECT * FROM Person_Visison WHERE Person_Visison.Pid=Person.id) ');
- 不相關子查詢:子查詢的查詢條件不依賴於父查詢的稱為不相關子查詢。
- 相關子查詢:子查詢的查詢條件依賴於外層父查詢的某個屬性值的稱為相關子查詢,帶EXISTS 的子查詢就是相關子查詢。
- EXISTS表示存在量詞:帶有EXISTS的子查詢不返回任何記錄的數據,只返回邏輯值“True”或“False”。
相關子查詢執行過程:先在外層查詢中取“學生表”的第一行記錄,用該記錄的相關的屬性值(在內層WHERE子句中給定的)處理內層查詢,若外層的WHERE子句返回“TRUE”值,則這條記錄放入結果表中。然後再取下一行記錄;重覆上述過程直到外層表的記錄全部遍歷一次為止。
- Exists:若子查詢的結果集非空時,返回“True”;若子查詢的結果集為空時,返回“False” 。
- NOT EXISTS :若子查詢結果為空,返回“TRUE”值;若子查詢的結果集非空時,返回 “FALSE。
嘿嘿嘿好理解多了吧!!!!!!!