SQL查询选择自[从tablename中选择值]

SQL查询选择自[从tablename中选择值],sql,oracle,Sql,Oracle,我试图从另一个表中的表中获取数据 选择*从选择tab1.value从tab1连接tab2在tab1.id=tab2.id上 当我尝试此操作时,会得到tab1.value,而不是外部选择* 有没有办法从外部选择获取数据 让我将其分解为两个sql语句,使其更简单一些 1从tab1.id=tab2.id上的tab1连接tab2中选择tab1.value 使用上面的tab1.value作为2的表名 2从tab1.value中选择*在查询中,外部查询只能选择从内部查询中获得的内容。如果希望外部select

我试图从另一个表中的表中获取数据

选择*从选择tab1.value从tab1连接tab2在tab1.id=tab2.id上

当我尝试此操作时,会得到tab1.value,而不是外部选择*

有没有办法从外部选择获取数据

让我将其分解为两个sql语句,使其更简单一些

1从tab1.id=tab2.id上的tab1连接tab2中选择tab1.value

使用上面的tab1.value作为2的表名


2从tab1.value中选择*在查询中,外部查询只能选择从内部查询中获得的内容。如果希望外部select查询执行更多操作,则需要为其提供更多操作,而不仅仅是内部查询。

本质上,select*是从内联视图返回结果集。如果您想显示tab1中的更多信息,您需要使用它。事实上,你根本不需要这么做:

select tab1.value, tab1.other_column, tab1.other_column_i_want, etc 
  from tab1
  join tab2 on tab2.id = tab1.id;
不需要内联视图。顺便说一下,选择*是一种不好的做法

这样想吧:如果我向你要钥匙圈中的一把钥匙,然后期望你的钥匙圈中的所有钥匙都是答案的一部分,你会认为我最多也有一个螺丝松了


您最初要求的是tab1.value。您无法从该结果集中提取其他列。

普通SQL无法这样做。您需要动态SQL来完成此操作。查询是正确的。它显示内部查询中的所有行。如果您能更好地解释您需要什么,我们可能会帮助您。外部查询的表名作为行存储在内部查询的一个表中。我需要查找该值并从中获取数据,这可能与假设tab1.value为字符串的情况相同-您不希望从tab1.value中选择*,而是希望从名为tab1.value的表中选择*。这不是一回事。如果您的第一个表是tab1,则从中选择的方式是select。。。来自tab1,而不是来自“tab1”,tab1显示为字符串。作为一匹马。。。我说,你需要动态sql来实现这个。我想要从tab1.other_column_i_want中选择*,这毫无意义。您正在告诉外部查询,我只提供tab1.value。您无法从称为内联视图的内部查询中提取其他列,因为它们实际上不存在于该结果集中。因此,要么您没有解释您想要什么,要么您不理解select语法。选择*意味着提供源包含的所有列中的所有数据。内部查询只包含一列tab1.value.tab1.other_column_i_want是作为行存储在tab1中的表名。查看表名以获取更多信息。我更新了原始线程,使其更容易理解。对不起,如果先前的帖子没有意义,我理解这个问题。想象一下,tab1由ID、NAME、FAVORITE\u COLOR、BEST\u MEAT\u PRODUCT列组成。选择*意味着从tab1中获取所有列中包含的所有内容。where子句限制了我的搜索条件。因此,请从表1中选择*,其中BEST_MEAT_PRODUCT='Baloney';表示从表1中选择ID、名称、最喜爱的颜色、最佳肉类产品,其中最佳肉类产品='Baloney';。好的,重读一遍。这只能使用编程函数来完成。不能用值替换基本SQL中的对象名称。