MySQL内部连接-请解释

MySQL内部连接-请解释,mysql,Mysql,我已经在这方面花了一段时间,似乎不知道如何将下面的代码从INTERSECT表单(MySQL不支持)转换为内部连接表单 如果有人能将下面的代码转换为内部连接,我想我可以从示例中理解。提前谢谢 (SELECT Student.SSN, First_Name, Last_Name FROM Student, Enrolls WHERE Enrolls.SSN = Student.SSN AND CourseNo='CSC132') INTERSECT (SELECT Student.SSN,

我已经在这方面花了一段时间,似乎不知道如何将下面的代码从INTERSECT表单(MySQL不支持)转换为内部连接表单

如果有人能将下面的代码转换为内部连接,我想我可以从示例中理解。提前谢谢

(SELECT Student.SSN, First_Name, Last_Name 
FROM Student, Enrolls 
WHERE Enrolls.SSN = Student.SSN AND CourseNo='CSC132')

INTERSECT

(SELECT Student.SSN, First_Name, Last_Name 
FROM Student, Enrolls 
WHERE Enrolls.SSN = Student.SSN AND CourseNo='CSC134');

我希望您不是真的在使用
SSN
主键

Quassnoi的回答预先假定了大量关于数据结构的信息。以下内容更可靠(并且可能更有效):


我认为这样做更好

SELECT Student.SSN, First_Name, Last_Name FROM

(SELECT Student.SSN, First_Name, Last_Name 
FROM Student, Enrolls 
WHERE Enrolls.SSN = Student.SSN AND CourseNo='CSC132') AS a

INNER JOIN

(SELECT Student.SSN, First_Name, Last_Name 
FROM Student, Enrolls 
WHERE Enrolls.SSN = Student.SSN AND CourseNo='CSC134') AS b

USING (Student.SSN, First_Name, Last_Name)

目前这只是为了学习,但是如果它被加密了,我就不能把它作为主键吗?@Dennis:这不是关于加密,而是关于唯一性和通用性。不知道您的法律要求,但如果学生没有
SSN
?如果两个学生有相同的一个呢?很好的一点-然而在美国SSN是独一无二的,所有公民都必须有一个。再次感谢您的帮助。@Dennis:根据,这对
美国公民既不是唯一的,也不是强制性的。但再一次,我甚至不是一个可以判断的
美国
居民。每本数据库书都给出了一个
SSN
作为坏
主键的例子,所以我想我要警告你:)哇,非常有趣。再次感谢你!一个更标准的方法,但确实更快!
 SELECT  s.SSN, s.First_Name, s.Last_Name 
 FROM    Student s,
         Enrolls e1,
         Enrolls e2
 WHERE e1.SSN=s.SSN
 AND   e2.SSN=s.SSN
 AND   e2.SSN=e1.SSN
 AND   e1.CourseNo='CSC132'
 AND   e2.CourseNo='CSC134';
SELECT Student.SSN, First_Name, Last_Name FROM

(SELECT Student.SSN, First_Name, Last_Name 
FROM Student, Enrolls 
WHERE Enrolls.SSN = Student.SSN AND CourseNo='CSC132') AS a

INNER JOIN

(SELECT Student.SSN, First_Name, Last_Name 
FROM Student, Enrolls 
WHERE Enrolls.SSN = Student.SSN AND CourseNo='CSC134') AS b

USING (Student.SSN, First_Name, Last_Name)