如何从不同的表格中选择何时

时间:2013-12-02 15:31:55

标签: sql-server

我有一些包含不同数据的表,但它们具有相同的列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

我知道这是错的,我该怎么办?

1 个答案:

答案 0 :(得分:3)

T-SQL中的

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