为什么这是错的,我怎么能说得对呢?
SELECT PublicationID
FROM (SELECT DISTINCT pat.PublicationID
FROM dbo.PubAdvTransData AS pat INNER JOIN
dbo.PubAdvertiser AS pa ON pat.AdvTransID = pa.AdvTransID
WHERE (pat.LastAdDate > '7 / 1 / 2009') AND (pat.PublicationID = 29171)) AS table1
UNION
SELECT PublicationAreaBuy.AreaBuyID AS PublicationID
FROM PublicationAreaBuy INNER JOIN
table1 AS table1_1 ON table1.publicationID = PublicationAreaBuy.PublicationID
Run Code Online (Sandbox Code Playgroud)
错误是table1是无效对象.
谢谢.
你有一个范围问题.联合组合了两个单独的查询.因此,如果您将查询分开:
SELECT PublicationID
FROM ( SELECT DISTINCT pat.PublicationID
FROM dbo.PubAdvTransData AS pat
INNER JOIN dbo.PubAdvertiser AS pa
ON pat.AdvTransID = pa.AdvTransID
WHERE (pat.LastAdDate > '7 / 1 / 2009') AND (pat.PublicationID = 29171)
) AS table1
SELECT PublicationAreaBuy.AreaBuyID AS PublicationID
FROM PublicationAreaBuy
INNER JOIN table1 AS table1_1
ON table1.publicationID = PublicationAreaBuy.PublicationID
Run Code Online (Sandbox Code Playgroud)
你可以看到在第二个查询中没有table1这样的东西.还有其他一些方法可以完成您要做的事情:
如果我们要复制子查询,它看起来像这样.但是,顶部查询没有条件,因此它不需要是子查询:
SELECT DISTINCT pat.PublicationID
FROM dbo.PubAdvTransData AS pat
INNER JOIN dbo.PubAdvertiser AS pa
ON pat.AdvTransID = pa.AdvTransID
WHERE (pat.LastAdDate > '7 / 1 / 2009') AND (pat.PublicationID = 29171)
UNION
SELECT PublicationAreaBuy.AreaBuyID AS PublicationID
FROM PublicationAreaBuy
INNER JOIN ( SELECT DISTINCT pat.PublicationID
FROM dbo.PubAdvTransData AS pat
INNER JOIN dbo.PubAdvertiser AS pa
ON pat.AdvTransID = pa.AdvTransID
WHERE (pat.LastAdDate > '7 / 1 / 2009') AND (pat.PublicationID = 29171)
) AS table1
ON table1.publicationID = PublicationAreaBuy.PublicationID
Run Code Online (Sandbox Code Playgroud)