需要使用mysql中表的子查询输出

需要使用mysql中表的子查询输出,mysql,sql,subquery,Mysql,Sql,Subquery,从给定的表格中,我需要为排名低于3且由老师或自己授课的学生按升序列出一个列表 它的预期输出是这样的 FROM THE GIVEN TABLES: Teacher And Student teacher_ID name city fee ------------------- ------------------------ 1 Jit New York 15000 2

从给定的表格中,我需要为排名低于3且由老师或自己授课的学生按升序列出一个列表

它的预期输出是这样的

FROM THE GIVEN TABLES: Teacher And Student

teacher_ID   name        city           fee   
------------------- ------------------------
1            Jit       New York        15000            
2            Nilon      Paris          13000    
5            Pol        London         11000        
6            Maj        Paris          14000         
7            Paul       Rome           13000
3            Liza       Saudi          12000
----------------------------------------------------------

student_id    name       city         rank        teacher_ID

2         Nick         New York        1               1 
7        Brady         New York        2               1
5        Gunman        California      2               2
8        Juli          London          3               2
4        Faral         Paris           3               6
9        Goku          Berlin          1               3
3        John          Moscow          2               7
1        Badstar       London          5
我试着写sql代码

name    city       rank      Teacher          city
Nick    New York     1         Jit          New York
John    Moscow       2         Paul         Rome
Gunman California    2         Nilon        Paris
Brady  New York      2         Jit          New York
Goku   Berlin        1         Liza         Saudi
根据学生ID ASC从排名<3的学生中选择姓名、城市、排名;
该代码为我提供了预期输出的前3列,但我不知道如何获得预期输出的最后两列,欢迎提供任何建议查询

SELECT name,city,rank FROM Student WHERE rank < 3 ORDER BY student_ID ASC;
选择Student.name,
学生城,
等级
Teacher.name作为“Teacher”,
教师城市
来自学生
在Teacher.Teacher\u ID=Student.Teacher\u ID上左键连接教师
其中秩<3
学生证ASC订购;
有一些事情你应该在声明

中考虑。
  • 选择要显示的字段时,需要确保表列引用是唯一的。由于这两个表都有字段名和城市,您应该使用[table].[column name]的格式专门引用它们

  • 有多种方法可以联接表。在这种情况下,您希望使用左联接,因为所有数据都存在于联接左侧的表中,而可能不存在于联接右侧的表中

  • 如果学生成绩少于3且没有教师,则教师姓名和城市将显示为空。您可能需要考虑添加IFNULL或类似的以使这些字段清晰。


  • 提示:使用
    left join
    teacher
    table注意等级在第8版中成为保留字您将需要返回勾选我在编辑器中使用的是mysql 5.7,我想我需要操纵教师\u id以某种方式更改第一个表中的名称作为教师并显示他们的公民请您在这里了解更多关于加入的信息谢谢,这确实有助于我了解更多关于加入查询的信息
    SELECT Student.name,
    Student.city,
    rank,
    Teacher.name as "Teacher",
    Teacher.city
    FROM Student 
    LEFT JOIN Teacher on Teacher.teacher_ID = Student.teacher_ID
    WHERE rank < 3 
    ORDER BY student_ID ASC;