来自另一个表的基于表名的语句

时间:2011-03-11 11:48:05

标签: sql sql-server select

我有两张桌子:

table1 
-id 1
-name animals

animals
-id 1
-age 13

现在我想创建类似这样的sql语句:

select age from (select name from table1 where id = 1)

可以在ms sql中执行此操作吗?

此致

3 个答案:

答案 0 :(得分:4)

我认为这是一个糟糕的设计。我用一把钥匙把两张桌子绑在一起:

<强>分类

 ID    Type
 1     Animal
 2     Person
 3     Building

<强>观光

 ID    Type      Name                   Age
 1     Animal    Fluffy                 13
 2     Person    Joe                    23
 3     Animal    Lucy                   3
 4     Building  Empire State Building  80

您的查询将是:

select age
from categories c
    inner join things t on c.Type = t.Type
where c.ID = 1

内容中的FK(加入)列上添加索引,以加快此速度。

答案 1 :(得分:1)

只能使用动态sql。

declare @sql nvarchar(max)
select @sql = 'select age from ' + name from table1 where id=1    
exec sp_executesql @sql

请注意,这通常不是一个好主意,根据tvanfosson's answer更改设计会更好。

答案 2 :(得分:0)

我认为你想要它:

SELECT T1.NAME, T2.AGE 
FROM TABLE1 T1 
INNER JOIN ANIMALS T2 ON T1.ID=T2.ID 
WHERE ID=1