我有一些包含不同数据的表,但它们具有相同的列UserId
:
如果您这样声明:
declare @Type nvarchar(max) = 'Video';
declare @Id nvarchar(max)='M00000000007199';
declare @UserIdTable TABLE (UserId bigint)
然后我想通过@UserIdTable
将值插入@Type
,然后我成像:
insert into @UserIdTable
case when @Type=Video then
select UserId from VideoTable
else
select UserId from TvTable
end
我知道这是错的,我该怎么办?
答案 0 :(得分:3)
CASE
是一个表达式,它可以返回一个值 - 它是不一个流控制语句,如C#或VB.NET,它不能包含SQL语句或代码块。
您需要重写代码才能使用常规IF .. THEN ... ELSE
语句 - 如下所示:
IF @Type = Video
INSERT INTO @UserIdTable
SELECT UserId FROM dbo.VideoTable
ELSE
INSERT INTO @UserIdTable
SELECT UserId FROM dbo.TvTable