鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ mysql一對(duì)多查詢問(wèn)題

mysql一對(duì)多查詢問(wèn)題

數(shù)據(jù)庫(kù)mysql

A表是學(xué)生表(數(shù)據(jù)量 20萬(wàn))
stu_id name

B表是學(xué)生興趣表 (數(shù)據(jù)量 80萬(wàn))
stu_id its_id

C表是學(xué)生特長(zhǎng)表 (數(shù)據(jù)量 170萬(wàn))
stu_id gda_id

需求是這樣的

現(xiàn)在需要查出既填寫了興趣,又填寫了特長(zhǎng)的學(xué)生,且結(jié)果中學(xué)生名字不重復(fù)。求一條高性能的sql!

回答
編輯回答
離觴

A表stu_id 應(yīng)該為唯一索引或主鍵,結(jié)果不存在重復(fù)的情況。即使學(xué)生名字重復(fù)也應(yīng)該顯示。

SELECT A.stu_id,A.name FROM A JOIN B ON A.stu_id = B.stu_id JOIN C ON C.stu_id = A.stu_id

2017年3月4日 13:14
編輯回答
兔寶寶

join+group by即可,興趣表和特長(zhǎng)表加上stu_id的索引.

from t_student s 
join t_its i on i.stu_id=s.stu_id 
join t_gda g on g.stu_id=s.stu_id
group by s.stu_id
2018年1月25日 20:15
編輯回答
何蘇葉
SELECT stu_id, name FROM A WHERE stu_id in 
(
    SELECT stu_id FROM B
) AND stu_id in
(
    SELECT stu_id FROM C
)
GROUP BY name
2018年4月14日 21:28