简体   繁体   English

SQL:如何连接具有相同含义但列名不同的表?

[英]SQL: how to join tables with same meaning but different column name?

Say I have table student, and table advisor.假设我有表学生和表顾问。 student contains ID and name:学生包含 ID 和姓名:

+----+------+
| ID | name | 
+----+------+

advisor contains s_id and i_id: Advisor 包含 s_id 和 i_id:

+------+------+
| s_id | i_id | 
+------+------+

how to join with result like this:如何加入这样的结果:

+----+------+------+
| ID | name | i_id | 
+----+------+------+

I've tried我试过了

select *
from student join advisor on student.ID=advisor.s_id

But it returns但它返回

+----+------+------+------+
| ID | name | i_id | s_id |
+----+------+------+------+

Thanks!谢谢!

Modify your existing query by including in the select list only the columns you actually want to see:通过在选择列表中仅包含您实际想要查看的列来修改现有查询:

SELECT s.ID, s.name, a.i_id
FROM student s
INNER JOIN advisor a
    on s.ID = a.s_id;

In case a given student might actually have no advisors, you could use a left join here to report NA for that student:如果给定的学生实际上可能没有顾问,您可以在此处使用左连接来报告该学生的NA

SELECT s.ID, s.name, COALESCE(a.i_id, 'NA') AS i_id
FROM student s
LEFT JOIN advisor a
    on s.ID = a.s_id;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM