SQL查询SELECT FROM [来自另一个表的列的值]

| 我有一个表X,当对某些表进行更改时,触发器将在其中插入一行。我已将表名称插入表X中。 现在,我想对表X的数据进行“ 0”处理,而对实际表本身进行“ 1”处理。是否可以通过将选择表的列中的值用作内部联接表来实现? 查询应该看起来像这样
SELECT X.a, Y.b, Y.c FROM X
INNER JOIN [X.TableName] AS Y ON Y.ID = X.ID
    
已邀请:
执行中
select \'SELECT X.a, Y.b, Y.c FROM X
INNER JOIN [\' + X.TableName + \'] AS Y ON X.ID = Y.ID 
where x.primarykey =\' + x.primarykey from x
将输出一系列sql语句,例如
SELECT X.a, Y.b, Y.c FROM X
INNER JOIN [ customer ] AS Y ON X.ID = Y.ID
where x.primarykey = 1234
然后您可以执行\“ sql to build sql \”。     
不,那是不可能的。您不能在查询中直接使用值作为表名,也不能将每个记录连接到不同的表。 您将必须为单个记录进行联接,并动态创建查询以使用值作为表名:
declare @name varchar(50)
set @name = select TableName from X where ID = 42
exec(\'select X.a, Y.b, Y.c from X innner join \' + @name + \' as Y on Y.DI = X.ID where X.ID = 42\')
    
使用动态查询:
DECLARE @table AS NVARCHAR(128);
DECLARE @sql NVARCHAR(4000);

-- of course you\'ll have to add your WHERE clause here 
SELECT @table = TableName FROM X;
SET @sql = \'SELECT X.a, Y.b, Y.c FROM X INNER JOIN \'+@table+\' AS Y ON Y.ID = X.ID\';

EXEC(@sql);
    

要回复问题请先登录注册