mysql exists 如何使用


還沒時間看,exists用的少  ==》當你只需要判斷后面的查詢結果是否存 在時使用exists()

http://edu.codepub.com/2011/0208/29218.php

 

今天正好做一個查詢,兩個表中過濾數據,當T1中字段F1在T2表的F2中存在時,返回這條件數據。剛剛開始覺得簡單,就想到子查詢和連接查詢,但是發現 兩個表中如果數據量多時,這樣就不行,並且效率不高,后來想到用Mysql中的In函數

 

    今天正好做一個查詢,兩個表中過濾數據,當T1中字段F1在T2表的F2中存在時,返回這條件數據。剛剛開始覺得簡單,就想到子查詢和連接查詢,但是發現 兩個表中如果數據量多時,這樣就不行,並且效率不高,后來想到用Mysql中的In函數,當用完后,也做出來了。但是想了一下,覺得應該有更好用的才對, 於是打開MYSQL手冊,查IN,結果找到exist函數。 
exist:用法如下: 
select * from T1 where exist(select * from T2 where T1.F1=T2.F2); 
其中,exist()中返回的只有TRUE和FALSE,這樣過濾的速度也比In快,也不用很麻煩。 
其實exist()用的最常見的,應該是在數據的插入,當數據庫中存在時,不要插入數據,以防止數據重復插入。 
Insert into T1 set F1=’xxx’,F2=’xxcc’ where not exist(select * from T1 where F1=’xxxx’); 
上面意思就是當表T1中F1存在值為xxxx的值記錄時,不插入數據。 

   實際上確實如此。當你只需要判斷后面的查詢結果是否存在時使用exists(); 
                   當你需要使用里面的結果集的時候必須用in(); 

      比方說: select fathername from atable where exists( select id from studenttable where name='tao2ge'); 
     
     當要查詢一個叫淘二哥同學的爸爸的時候,需要使用exists(); 

       但如果有一群學生需要查爸爸。 那就得用in了。 
    select fathername from atable where fatherid in (select id from student);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM