数据库mysql
A表是学生表(数据量 20万)
stu_id name
B表是学生兴趣表 (数据量 80万)
stu_id its_id
C表是学生特长表 (数据量 170万)
stu_id gda_id
需求是这样的
现在需要查出既填写了兴趣,又填写了特长的学生,且结果中学生名字不重复。求一条高性能的sql!
A表是学生表(数据量 20万)
stu_id name
B表是学生兴趣表 (数据量 80万)
stu_id its_id
C表是学生特长表 (数据量 170万)
stu_id gda_id
现在需要查出既填写了兴趣,又填写了特长的学生,且结果中学生名字不重复。求一条高性能的sql!
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
A表stu_id 应该为唯一索引或主键,结果不存在重复的情况。即使学生名字重复也应该显示。
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
join+group by即可,兴趣表和特长表加上stu_id的索引.