鍍金池/ 問答/數(shù)據(jù)庫/ mysql一對多查詢問題

mysql一對多查詢問題

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

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

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

C表是學(xué)生特長表 (數(shù)據(jù)量 170萬)
stu_id gda_id

需求是這樣的

現(xiàn)在需要查出既填寫了興趣,又填寫了特長的學(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即可,興趣表和特長表加上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