【发布时间】:2022-06-22 07:55:13
【问题描述】:
一份合同可以有多次付款。 给定两个表 t1 和 t2,它们的 contractID 和 paymentID 列都为 nvarchar(255)
-
我想找出一张表中的合同,但不是 其他两个方向。
我想到了全外连接,比如
SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.contractID = t2.contractID AND t1.paymentID = t2.paymentID但是它返回的结果包含了内连接的结果。所以 你会使用什么查询?
-
对于出现在两个表中的每个合同:
我想在一张表中查找付款,但在另一张表中不查找 在两个方向。你会使用什么查询?你能自动化 迭代出现在两个表中的合约?
【问题讨论】:
-
您的完整外连接缺少 ON 子句。老实说,只需将您的 WHERE 更改为 ON,它应该完全按照您所说的去做。
-
union是except的结果会更简单。请将问题限制为每个问题一个问题。 -
@SeanLange 我的错字。但是全外连接的结果包含内连接的结果。那么你会使用什么查询呢?
-
@Stu 你能详细说明一下吗?也许发布一个答案?
-
请澄清一下 - 您是否需要不包括匹配行的查询?然后你可以使用
where t1.contractid is null or t2.contractid is null这样的条件。
标签: sql-server join