mysql - "TableB"中 "LEFT JOIN TableB ON TableA.name = TableB.name"的任何值?

标签 mysql sql

全部,

我正在复习一些基本的 MySQL JOIN 教程。杰夫·阿特伍德 gives an example在他的博客上是这样的:

SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name

在我看来,从语义的角度来看,查询不需要在第二行提及 TableB。我理解正确吗?在我看来,所有信息都已在第 3 行中提供。

我并不是要对 SQL 语言的效率造成任何类型的麻烦,我只是想了解对 TableB 的提及是否会在这种情况下或其他情况下带来任何新信息.

最佳答案

它不会带来新的信息,但它确实带来了精度和为表格命名的能力:

SELECT a.* FROM TableA a
LEFT OUTER JOIN TableBWhichHasAReallyLongUnweildyName b
ON a.name = b.name

请注意,在这个公式中,我既可以明确地从 a 中请求数据,也可以在第 3 行中更轻松地找出连接。但是,编译器不会有关于从哪里获取什么信息的非任意指导除非我明确声明,否则要使用的表。考虑一下这是否是 SQL 的工作方式:

SELECT b.* FROM TableA a
LEFT OUTER JOIN 
ON TableA.name = TableB.name b
WHERE TableB.value v > 1

我是说 tableB 的别名是“b”,还是 TableB.name 的别名是“b”?这只是令人困惑;最好是明确和权威的。

关于mysql - "TableB"中 "LEFT JOIN TableB ON TableA.name = TableB.name"的任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115072/

相关文章:

sql - 如何在 SQL Server 中的 select 语句中将表名作为参数传递

c# - 所有实体类型的关键属性必须映射到存储函数返回的相同的不可空列

mysql - 如何向现有表添加外键?

php - JOIN sql 语句的问题

sql - 在 SQL 语句中使用 LIMIT 时性能提高了多少?

php - SQL 查询,比较表、字符串和整数之间的数据

php - 使用 php 对 mysql 记录进行高级/技术排序

php - 每次用户更改 MySQL/WordPress 数据库中的行时自动运行 PHP 脚本

mysql - 从 NodeJS (Express App) 连接到 MySQL 会抛出错误

mysql - 投票系统,关系数据库,SQL 查询