我希望這里有一個更一般的語言問題,但整個查詢讓人特別困惑。:P 我從來沒有見過一個 SQL 陳述句后跟一個逗號(而不是分號),后跟看起來不是另一個陳述句的,也沒有看到看起來像一個子查詢,在它之后有額外的 WHERE 子句。所以……哇?
當我運行這個查詢時,我得到一個包含兩列的結果集:Address和Zip。
順便說一句,這是針對 SQL Server 運行的。
SELECT
[Address] AS [Address],
[AgencySitesV3].[Zip] AS [Zip]
FROM
[AgencySitesV3] WITH (NOLOCK)
INNER JOIN [Zip] WITH (NOLOCK) ON [AgencySitesV3].[Zip] = [sZipCode]
,(
SELECT gZipPoint
FROM [Zip] WITH (NOLOCK)
WHERE sZipCode = '30301'
) AS qryOrigin
WHERE
NULLIF([ActiveApp], '') IS NOT NULL
AND NULLIF([ActiveScheduling], '') IS NOT NULL
AND NULLIF([Adult], '') IS NOT NULL
編輯:感謝所有提供資訊/評論的人。很明顯,這個查詢使用的是 SQL-89 連接語法,這就是我以前從未見過它的原因。:P 但是,該查詢還使用了現代連接,這使它變得更加奇怪。為簡潔起見,我刪掉了很多,但我重新添加了一個連接,因為現在我不確定ON在替換 SQL-89 連接時該條件使用什么。查看更新的查詢代碼。
uj5u.com熱心網友回復:
SELECT
[Address] AS [Address]
FROM
[AgencySitesV3] WITH (NOLOCK)
,(
SELECT gZipPoint
FROM [Zip] WITH (NOLOCK)
WHERE sZipCode = '30301'
) AS qryOrigin -- this is the table alias for
-- the derived table from the sub query
WHERE
NULLIF([ActiveApp], '') IS NOT NULL
AND NULLIF([ActiveScheduling], '') IS NOT NULL
AND NULLIF([Adult], '') IS NOT NULL
此查詢使用舊式連接從帶有派生表輸出的地址列中獲取笛卡爾積。這意味著它正在獲取兩個輸出的所有組合。它應該是 CROSS JOIN,但無論如何。
簡單地說 - 它正在獲取郵政編碼 30301 的所有地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328803.html
標籤:sql sql-server 查询语句 子查询
上一篇:SQLServer常規透視
下一篇:如果組內所有缺失值,R替換缺失值
