如果我想在同一批次中从多个查询中引用我的行集,我可以使用哪种类型的对象(在T-SQL中)?
我正在强调同一批次。
非常感谢
答案 0 :(得分:1)
创建临时表变量并插入其中。
DECLARE @TempCustomer TABLE
(
CustomerId uniqueidentifier,
FirstName nvarchar(100),
LastName nvarchar(100),
Email nvarchar(100)
);
INSERT INTO
@TempCustomer
SELECT
CustomerId,
FirstName,
LastName,
Email
FROM
Customer
WHERE
CustomerId = @CustomerId
答案 1 :(得分:0)
我不清楚,但您可以使用批量插入或批量更新来处理multiplus结果。
要INSERT,您可以执行SELECT,准确返回要插入另一个表的字段,如...
INSERT INTO TableA (ID, Name, Phone)
SELECT CustomerID, CustomerName, CustomerPhone
FROM TableB
要更新,要意识到TableA的'客户'要使用TableB信息进行更新,那么你可以做...
UPDATE TableA
SET TableA.Phone=TableB.Phone
FROM TableB
WHERE TableA.CustomerID=TableB.CustomerID
答案 2 :(得分:0)
问题对我来说并不完全清楚,但一种方法是使用is来实现"会话中的数据。表:
SessionId - UNIQUEIDENTIFIER is one option
Col1
Col2
...
Coln
UNIQUEIDENTITIER
是最简单的选择,但不是最快的(大键)。否则,可以使用SEQUENCE
(SQL2012 +)。
使用INSERT .. SELECT:
INSERT INTO SessionTable
(SessionId, Col1, Col2, ... , Coln)
SELECT @SessionId, ....
FROM <various sources>
缺点:
表已实现,并且SELECT
权限所有人均可访问。如果处理敏感数据,则必须处理安全性(DENY
)。
表必须显式截断/删除(临时表和表变量会自动删除)
答案 3 :(得分:-1)
您可能希望使用Global Temp表,因为它具有当前会话之外的作用域,但是只有在有会话访问它时才会被警告它。