mysql - 使用左连接并保留左表 ID 的值

标签 mysql sql

我的数据库中有两个表,其中第一个表具有第二个表的相关值。就像这样:

表“人”

ID |    NAME   | SCHOOL
-------------------------
1  | john      | 2
2  | fred      | 1
3  | maria     | 3

表“学校”

ID |   NAME  
-------------------------
1  | first school
2  | second school
3  | third school

好的。 我正在尝试在“人员”表中进行选择,并将“学校”号码替换为“学校”表相关 ID。

所以我这样做了:

"SELECT * FROM people A LEFT JOIN school B ON A.school = B.id"

没关系!

但是,如果我必须在此返回中获取“人员”ID 值,它将被“学校”表 ID 值替换。

我该如何解决这个问题?

非常感谢!

最佳答案

如果您正在学习 SQL,请学习列出您想要的所有列。明确:

SELECT p.id, p.name, s.name as school_name
FROM 
     people p LEFT JOIN
     school s
     ON p.school = s.id;

注释:

  • 表别名是表名称的缩写。这使得查询更容易理解。
  • 这里并不真正需要LEFT JOIN,但您正在使用它。
  • s.name 可以使用别名(s.name as school_name)以区别于人名。

关于mysql - 使用左连接并保留左表 ID 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48894984/

相关文章:

mysql - 将可选数据存储在单独的表中或作为列

mysql - TSQL 插入语法与 MySql

sql - Clickhouse,要数组的列值

mysql - 整合来自 2 个不同数据库的数据

php - MySQL:重复条目拉取

mysql - 是否可以更改 Rackspace 客户端帐户上的 ft_min_word_len?

mysql - 根据我从中选择的表设置 View 的列值

sql - 如何创建将 csv 字段分解为多行的 View ?

Java 和 SQL - 批处理时出错,必须执行或清除批处理

sql - 使用 Zend DB 编写子查询