我在SQL Server中有这个查询:
select column
from table_53;
现在,我想从另一张表中得到这个53,所以我想做的是这样的:
select column
from table_(select id from table2);
有没有办法在SQL Server中执行此操作?
答案 0 :(得分:1)
这绝对不是SQL思考和运作的方式。也许你可以通过编写存储过程来模拟你建议的方法,然后在其中创建SQL语句然后进行评估。但是,这不会非常有效。
更好的方法是将所有单独的表的值存储到一个主表中,并在单独的列tblid
中标记它们的编号(例如53
)。然后,您始终可以通过查找此tblid
来过滤它们。
答案 1 :(得分:0)
您需要动态SQL查询。
declare @sqlQuery = 'select column
from table_(';
set @sqlQuery = @sqlQuery + 'select id from table2)';
EXEC (@sqlQuery)
注意: - 使用动态sql查询的一个缺点是sql注入。我建议有更好的表结构或尝试使用参数化查询。
答案 2 :(得分:0)
是的,你可以,但是使用这样的东西:
DECLARE @ID INT;
DECLARE @QUERY NVARCHAR(MAX);
SELECT @ID = ID FROM TABLE_2;
--IF @ID EQUALS 53 THEN
SET @QUERY = 'SELECT COLUMN FROM TABLE_' + CAST(@ID AS NVARCHAR(10));
-- @QUERY EQUALS TO 'SELECT COLUMN FROM TABLE_53'
EXEC (@QUERY);