首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL Server 表變量 JOIN 查詢報錯「必須聲明標量變量」:別名解決法

     編輯:程式設計綜合問答

錯誤重現

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 關鍵字提高可讀性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved