2

我试图理解一些代码,并看到在这个查询中使用了“ON”运算符(使用 sql server)。

SELECT A.*, B.UID
FROM Table1 A Left Outer Join
(SELECT ID FROM Table2) AS B ON A.ID= B.ID
...

这个运营商具体是做什么的?

4

4 回答 4

5

ON represents one or more JOIN conditions by which we could match records from one table to other.

For understanding how joins works visually, read following -

于 2013-06-06T14:48:01.580 回答
3

它不是运算符 - 它是 a 的一部分JOIN它是FROM子句的一部分

它与子句非常相似WHERE——除了它仅用于过滤两个表(或行集)的连接。

在这种情况下,它是来自AB的行匹配的条件。如果您在WHERE子句中有相同的条件,它会影响连接 - LEFT JOIN(此处)允许在其中找到没有匹配的行,B但仍将该行贡献A给结果(其中Bs 列是NULL)。如果您在 中放置相同的条件WHERE,它会强制连接变为 anINNER JOIN而不是 a LEFT JOIN

于 2013-06-06T14:22:03.223 回答
2

您一定会对在 JOIN 语句中使用内联查询(SELECT ID FROM Table2)感到困惑。查询可以写成:

SELECT A.*, B.UID
FROM Table1 A Left Outer Join Table2 B
ON A.ID = B.ID
于 2013-06-06T14:24:07.557 回答
1

它表示字段之间的关联,以强制执行JOIN.

于 2013-06-06T14:23:41.607 回答