【发布时间】:2012-02-06 11:57:01
【问题描述】:
我需要在不使用“左连接”键的情况下模拟左连接效果。
我有两个表,A 和 B,都有 id 和 name 列。我想选择两个表上的所有 dbid,其中 A 中的名称等于 B 中的名称。
我用它来进行同步,所以一开始 B 是空的(所以我会有一对来自 A 的 id 有一个值,而来自 B 的 id 为空)。稍后我将混合具有 value - value 和 value - null 的夫妇。
通常是:
SELECT A.id, B.id
FROM A left join B
ON A.name = B.name
问题是我不能使用left join 并且想知道是否/如何可以做同样的事情。
【问题讨论】:
-
为什么不能使用左连接?
-
“我想做[事情]但我不能使用[通常用来做[事情]的工具]”格式的问题通常是一个标志以错误的方式处理问题。请围绕您要解决的实际问题提供一些背景信息,以及您不能在查询中使用
LEFT JOIN的原因。 -
@Polynomial 有时它是家庭作业或面试问题的标志。或者,也许 OP 的
L-key 坏了。也许他会澄清...... -
听起来你想要关系运算符semi difference (a.k.a. antijoin),但不知道它叫什么,所以检查了通常用于执行它的 SQL 概念。不能使用左连接可能是一个有趣的问题,但又提出了另一个问题:“你可以使用什么可以?”
-
@Polynomial:在 SQL 中总是有大约七种方法可以完成给定的事情,其中两种将被视为候选方法,应该进行性能测试。 SQL 不是一种万能的语言。
标签: sql