如何使用不重复的列来进行干净的连接

时间:2014-12-12 12:31:20

标签: mysql database phpmyadmin

我有一张包含所有学生姓名的表格和另一张带有学生姓名的表格以及他们在课堂上的报名我希望向学生展示他们的班级姓名,即使他们没有参加任何班级我使用的联合之间注册了名称重复的唯一问题

学生(student_id,student_name,专业,年级,年龄) 已注册(student_id,class_name,semester)

这是MySQL查询:

从学生自然联接登记联盟中选择student_name,class_name选择student_name,通过student_name从学生组中选择null作为class_name;

2 个答案:

答案 0 :(得分:0)

您应该像这样使用LEFT JOIN:SELECT s.student_name,来自学生的LEFT JOIN的e.class_name注册e ON s.student_id = e.student_id

答案 1 :(得分:0)

这对你有用吗?

SELECT 
  s.student_name,
  e.class_name 
FROM 
  student s 
  LEFT JOIN enrolled e ON s.student_id = e.student_id 
GROUP BY student_name;
当其中一个表可以具有空值时使用

LEFT JOIN,而另一个表不能。 "左边"桌子(在这种情况下是学生)是最重要的一个,"右边" table(enrollment)是可以为null的那个。

所以它总是会找到学生表,但是当它找不到与该学生相关联的class_name时,它只会显示为NULL。

如果您想要同一个学生多次注册,则您必须删除该组。