当前位置: 首页 > 知识库问答 >
问题:

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

赵灼光
2023-03-14

我有一个包含所有学生姓名的表,另一个包含学生姓名及其班级注册情况的表,我想显示两个学生的班级名称,即使他们没有注册任何班级,我在注册和未注册之间使用了union唯一的问题是姓名重复

学生(student_id、student_name、专业、级别、年龄) 入学人数(student_id、class_name、学期)

下面是我的 SQL 查询:

选择student_name,class_name从学生自然加入注册工会选择student_name,空class_name从学生组通过student_name;

共有2个答案

宓茂才
2023-03-14

您应该像这样使用左联接:从学生的左联接注册s.student_name中选择.class名s.student_id=e.student_id

杨豪
2023-03-14

这对你有用吗?

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。“左”表(在本例中为学生)是最重要的表,“右”表(注册)是可以为空的表。

所以它总是能找到学生表,但是当它找不到与那个学生相关联的class_name时,它就显示为NULL。

如果你想对同一个学生进行多次注册,你必须删除该组。

 类似资料:
  • 问题内容: 这是我的.htaac​​cess代码。 我需要网站的干净URL。我参考了许多教程和论坛,并创建了上面的代码。但是无法正常工作。几乎我正在与代码作斗争。我不太清楚干净的URL概念。我要在我的php页面上编写任何编码吗? 我在index.php文件中有此链接。 我想要同时点击链接泰坦尼克号。 我也想通过$ _ [request]获得值。 我到底要做什么。请不要重复提出这个问题,我已经搜索了

  • 问题内容: 我已经使用以下命令从Docker文件构建了一个Docker映像。 当我尝试使用同一命令重建它时,它正在使用构建缓存,例如: 缓存显示已安装Aerospike。但是,我在从该图像生成的容器中找不到它,因此我想在不使用缓存的情况下重建该图像。如何强制Docker在没有缓存的情况下重建干净的映像? 问题答案: 有一个选项: 在较旧的Docker版本中,您需要通过,但情况不再如此。

  • 我是Android Studio的新手,所以我面临一些问题。我正在寻找一种如何干净地项目的方法。 在Eclipse中,我会做<代码>项目-

  • 问题内容: 我正在创建一个laravel程序包,在这个页面中我需要在Redis中保存一些数据,但是我希望该程序包使用不同的Redis连接,以便他们可以在程序包的配置文件中设置Redis详细信息凭据并将其用于这个包。我想给包用户使用不同的Redis连接的自由。 如果您有任何想法,我怎么能做到这一点。任何帮助,将不胜感激。 问题答案: 文档中有一节称为 使用多个Redis连接 更改连接呼叫 您可以在运

  • 我得到了一个日期字段格式为的对象,我将其映射到一个对象中,如下所示: 现在我需要将这个对象作为json响应发送,但我需要它采用不同的格式: 如果我更改字段,反序列化失败: 如何使用不同的模式进行序列化

  • df1有每月时间索引,df2有季度时间索引。df1和df2有不同的行数和列数,我想:(1)并排连接它们并保持它们的索引。(2)输出到excel文件。 我尝试过pd.concat,但是这种方法连接基于我不想要的数据帧索引之一的数据帧 excel中的预期结果: