【发布时间】:2016-08-18 00:45:54
【问题描述】:
我对别名如何与连接一起使用有些困惑。经过一番谷歌搜索后,我发现使用 CTE 可以获得我想要的行为,但不清楚为什么我的初始尝试失败了。
简而言之 - 为什么会这样:
WITH C AS
(
SELECT
*
FROM
dbo.Table1 as A
INNER JOIN
dbo.Table2 as B ON A.Col1 = B.Col1
)
SELECT C.Col2
FROM C;
但这不是吗?
SELECT
C.Col2
FROM
(dbo.Table1 as A
INNER JOIN
dbo.Table2 as B ON A.Col1 = B.Col1) as C;
【问题讨论】:
-
您在 'dbo.Table1' 之前错过了“SELECT
FROM” -
是的......它们是不同的 - CTE 有一个选择,而子表没有。
标签: sql-server join sql-server-2012