首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL查询,用于在表中显示所有具有公共课程的学生

MYSQL查询,用于在表中显示所有具有公共课程的学生
EN

Stack Overflow用户
提问于 2013-09-18 02:19:46
回答 1查看 459关注 0票数 1

首先,我有如下的表结构和数据:

我想返回所有其他学生的每门公共课程,他们有一个特定的学生。

我使用的是这个查询:

代码语言:javascript
复制
SELECT  DISTINCT students.name AS StudentName, students.id as StudentId, courses.id AS   
CourseId,courses.name AS CourseName, universities.id AS University FROM partners
INNER JOIN students ON students.id = partners.student_id
INNER JOIN courses ON courses.id = partners.course_id
INNER JOIN universities ON universities.id = partners.university_id
WHERE students.id != '1' AND partners.course_id IN('6','2','1')
GROUP BY students.name
ORDER BY date

它返回给我正确的结果,但问题是它似乎不是很有效,尤其是我想知道如何在真正的应用程序中传递IN()语句中的数据。

我希望我说得够清楚了。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-09-18 02:36:10

基于partners.student_id对学生的选择进行限制会更加有效。

在students.name上使用Group by是一个非常昂贵的操作。请改用partners.student_id。

在没有对您的特定查询进行过多研究的情况下,我猜DISTINCT的使用表明您有一个笛卡尔乘积。通常情况下,明智的做法是消除查询的本质,并从那里增强它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18857080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档