from 语句基于从另一个表获取的表名

发布于 2024-10-22 00:50:45 字数 232 浏览 1 评论 0原文

我有两个表:

table1 
-id 1
-name animals

animals
-id 1
-age 13

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

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

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

问候

I have two tables:

table1 
-id 1
-name animals

animals
-id 1
-age 13

Now I want to create sql statement something like this:

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

It is posible to do this in ms sql ?

Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌路终见情 2024-10-29 00:50:45

我认为这是一个糟糕的设计。我会使用一个键将两个表连接在一起:

类别

 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(连接)列上添加索引 来加快速度。

I think this is a bad design. I'd use a key to tie just two tables together:

Categories

 ID    Type
 1     Animal
 2     Person
 3     Building

Things

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

The your query would be:

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

Add an index on the FK (join) column in Things to make this fast.

眼泪都笑了 2024-10-29 00:50:45

只能使用动态sql。

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

请注意,这通常不是一个好主意,您最好按照 tvanfosson 的回答

It is possible only using dynamic sql.

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

Note that this is not a good idea in general, and you'd be much better off changing your design as per tvanfosson's answer.

[旋木] 2024-10-29 00:50:45

我认为你想要什么:

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

What I think you want it:

SELECT T1.NAME, T2.AGE 
FROM TABLE1 T1 
INNER JOIN ANIMALS T2 ON T1.ID=T2.ID 
WHERE ID=1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文