gpt4 book ai didi

MYSQL 查询在表中显示所有有共同类(class)的学生

转载 作者:行者123 更新时间:2023-11-29 00:26:05 24 4
gpt4 key购买 nike

首先我有这个表结构和数据如下: enter image description here

我想返回所有其他学生,他们为特定学生开设的每门公共(public)类(class)。

我正在使用这个查询:

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() 语句中的数据传递给真正的应用程序。

我希望我是清楚的。

谢谢

最佳答案

根据partners.student_id限制学生选择会更高效。

对 students.name 进行分组是一项非常昂贵的操作。请改用 partners.student_id。

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

关于MYSQL 查询在表中显示所有有共同类(class)的学生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18857080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com