sql: select * from zhubiaofushu where id in (select fid from zhubiao) select * from zhubiao t inner join zhubiaofushu t1 on t.fid= t1.id select t1.* from zhubiao t inner join zhubiaofushu t1 on t.fid= t1.id select distinct t1.* from zhubiao t inner join zhubiaofushu t1 on t.fid= t1.id order by t1.id asc
按以上順序執(zhí)行結(jié)果如下:
ID NAME -------------------- -------------------- 1 1班 2 2班 2 rows selected ID NAME FID ID NAME -------------------- -------------------- -------------------- -------------------- -------------------- 1 小王 1 1 1班 2 小唐 1 1 1班 3 小宇 2 2 2班 4 小丹 2 2 2班 4 rows selected ID NAME -------------------- -------------------- 1 1班 1 1班 2 2班 2 2班 4 rows selected ID NAME -------------------- -------------------- 1 1班 2 2班 2 rows selected
可以看到,第三條sql文執(zhí)行結(jié)果中有重復(fù)數(shù)據(jù),顯然不是想要達到的效果。
所以,在多表連接時,如果只需要其中某一個表的列的值,可以優(yōu)先考慮子查詢。當(dāng)使用聯(lián)合查詢時,需要使用distinct關(guān)鍵字,并注意排序,因為distinct貌似是默認(rèn)降序排列的。
聯(lián)合查詢產(chǎn)生重復(fù)數(shù)據(jù)的原理:因為【zhubiao】中存在多對1的數(shù)據(jù),生成的笛卡爾積中關(guān)于【zhubiaofushu】中有重復(fù)數(shù)據(jù),所以,在此基礎(chǔ)上的【t1.*】獲取的數(shù)據(jù)重復(fù)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com