Sql-Server
查看設計器奇怪的連接語法
我有一個數據倉庫,其中包含 SSMS 視圖設計器內置的許多視圖。查看語法,這些
FROM
子句對我來說是難以理解的,因為這些ON
語句沒有緊跟在相關的JOIN <table>
. 通常查詢的主表是RIGHT
連接的,並且在FROM
. 所以我有這樣的情況:SELECT * FROM tableC LEFT JOIN TableB RIGHT JOIN TableA ON TableA.ID = TableB.ID ON TableB.TypeID = TableC.TypeID WHERE ....
將各種
JOIN
和ON
子句的順序更改為我手寫的內容會以意想不到的方式改變結果。似乎大多數 SQL 漂亮器都被這種醜陋的語法嗆住了,但 SSMS 卻沒有。我無法找到韻律、原因或文件來幫助解開正在發生的事情。請有任何建議或連結來解決和修復視圖設計器查詢?
這只是刪除了可選括號的標準 SQL 連接語法:
SELECT * FROM tableC LEFT JOIN ( TableB RIGHT JOIN TableA ON TableA.ID = TableB.ID ) ON TableB.TypeID = TableC.TypeID
如果您不喜歡 SSMS 視圖設計器生成的語法(它有問題而且很少更新),只需使用正常 T-SQL 手動編寫視圖。
有些人將這種語法風格稱為“嵌套連接語法”。範例部落格文章。