在标量变量中显示我的表的所有数据

时间:2017-08-19 13:24:36

标签: sql-server scalar

我正在使用sql,这里我有一个sql语句,我需要将我的sql表的数据存储在标量变量中

我做了类似这样的事情

declare @variable1 as varchar(50)
declare @variable2 as varchar(50)
SELECT @variable1 = tid, @variable2 = empname
FROM trainerdetails
select @variable2 as empname,@variable1 as tid

但我的输出中只显示了一条记录

empname     tid
test        354
如果我想将我的表的所有数据存储在我的标量变量中,我应该在这做什么?

2 个答案:

答案 0 :(得分:0)

标量变量仅包含数据的最后部分。您将需要一个表变量

declare @tbl table
(
col1 int,
col2 int
)
insert into @tbl
select * from yourtable

答案 1 :(得分:0)

根据定义,标量变量一次只能保存一个值。所以......如果你想把整个数据库的数据合二为一,你需要连接那些数据......通常是逗号分隔数组的形式。 这些方面的东西......

IF OBJECT_ID('tempdb..#temp', 'U') IS NOT NULL
DROP TABLE #temp;

CREATE TABLE #temp (
    ID INT NOT NULL,
    PersonName VARCHAR(50) NOT NULL 
    );

INSERT #temp (ID, PersonName) VALUES 
    (1, 'Mark'), (2, 'Sally'), (3, 'Joe'), (4, 'Tammy'), (5, 'Bob');

SELECT * FROM #temp t;

--========================================

DECLARE 
    @ID VARCHAR(100) = '', 
    @PersonName VARCHAR(1000) = '';

SELECT 
    @ID = CONCAT(@ID, ', ', t.ID),
    @PersonName = CONCAT(@PersonName, ', ', t.PersonName)
FROM 
    #temp t
ORDER BY 
    t.ID;

SELECT 
    ID = STUFF(@ID, 1, 1, ''),
    PersonName = STUFF(@PersonName, 1, 1, '');

结果...

ID              PersonName
--------------- ------------------------------
 1, 2, 3, 4, 5   Mark, Sally, Joe, Tammy, Bob

HTH, 杰森

相关问题