mysql - 构建 SQL 连接以补充数据。需要 T-SQL 帮助

标签 mysql sql sql-server

假设我的数据为,

declare @TableA table
(
  TableAID int,
  TableAName varchar(10)
)

declare @TableB table
(
  TableBID int,
  TableBName varchar(10),
  TableAID int
)

insert into @TableA values
(1, 'A 1'),
(2, 'A 2'),
(3, 'A 3')

insert into @TableB values
(1, 'B 1', 1),
(2, 'B 2', 2)

我想编写一个连接而不是 SQL 查询,它返回如下所示的数据,

TableAName TableBName
---------- ----------
A 3        N/A

简而言之,通过内部联接获得 View 的补充!

最佳答案

这是OUTER JOIN的经典用法,最常见的是使用LEFT OUTER JOIN(通常缩写为LEFT JOIN) >)

SELECT A.TableAName, B.TableBName
FROM TableA A
LEFT JOIN TableB B on A.TableAID = B.TableAID
WHERE B.TableAID IS NULL

外连接允许记录数不等,这里TableA有3条,TableB有2条。当TableB中没有匹配数据时,就会存在NULL,因此可以如上所示过滤NULL。

请帮自己一个忙,去 here for a visual representation of joins & 查找Left Exclusion JOIN

关于mysql - 构建 SQL 连接以补充数据。需要 T-SQL 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25849807/

相关文章:

SQL Server Join 含义

php - 从 PHP 将丹麦语字符插入到 sql server

mysql - 相当于 "SELECT * FROM (SELECT table_name FROM...)"的东西?

PHP网页解析到MYSQL数据库

php - 导入逗号分隔的文件到mysql

php - JOIN 两个表(其中一个需要连接)

c# - 为空时创建新 SqlConnection 的最佳方法

c# - 使用 BindingSource 在数据库中保存更改

sql-server - SQL Server 用于全文索引的排名方法

sql-server - 黑客可以欺骗或注入(inject)表单字段吗?