gpt4 book ai didi

mysql - 如何为此查询执行内部联接

转载 作者:行者123 更新时间:2023-12-03 22:23:16 26 4
gpt4 key购买 nike

有人可以帮我解决我的语法问题吗?我花了 1 个小时来解决它,但我无法弄清楚。

我有3张 table :

**Student**

-ID (UUID)

email (String)

**Teacher**

-ID (UUID)

email (String)

**StudentTeacher**

-ID (UUID)

studentId (UUID)

teacherId (UUID)

我有一个初始查询,它返回一些 studentId
SELECT studentId FROM TeacherStudents WHERE teacherId IN ('123', '456') GROUP BY studentId HAVING COUNT(DISTINCT teacherId) = 2

我想将结果与学生表合并,以便返回电子邮件地址

但是,这不起作用
SELECT email FROM TeacherStudents WHERE teacherId IN ('123', '456') GROUP BY studentId HAVING COUNT(DISTINCT teacherId) = 2 INNER JOIN Students on TeacherStudents.studentId = Students.id

它返回一个错误。

最佳答案

正确的语法是:

SELECT s.studentId, s.email
FROM TeacherStudents ts JOIN
Students s
ON ts.studentId = s.id
WHERE ts.teacherId IN (123, 456)
GROUP BY s.studentId, s.email
HAVING COUNT(DISTINCT ts.teacherId) = 2 ;

笔记:
  • WHERE 是跟在 FROM 子句之后的 SQL 子句。
  • JOIN s 是 FROM 子句中的运算符。
  • TeacherId 可能是一个数字,所以不要使用单引号。
  • 表别名使查询更易于编写和阅读。
  • 您正在学习 SQL,因此请确保 SELECT 中的未聚合列与 GROUP BY 匹配。如果你真的想要,你可以从 s.studentId 中删除 SELECT
  • 限定所有列名,以便您知道它们来自哪个表。
  • 关于mysql - 如何为此查询执行内部联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60830135/

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