DECLARE @list TABLE (Id INT, Name NVARCHAR(12));
INSERT INTO @list SELECT * FROM tableA;
SELECT * FROM @list, tableB WHERE @list.id = tableB.id; -- 錯誤
錯誤:Must declare the scalar variable "@list".
SQL Server 解析器在多表 JOIN 時,將 @list 識別為標量變量而非表源,**必須為表變量指定別名**。
SELECT * FROM @list AS L JOIN tableB AS B ON L.id = B.id;
-- 或
SELECT * FROM @list L, tableB B WHERE L.id = B.id;
@list 僅在批次內有效,不支持統計信息,大數據量 JOIN 建議用臨時表 #list。AS 關鍵字提高可讀性。