【问题标题】:selecting table using subquery sql使用子查询 sql 选择表
【发布时间】:2014-06-27 16:09:57
【问题描述】:

注意:这是针对 SQL Server 2008 的。

我有一个包含许多列的表,其中两个与本次讨论相关:Object 和 TableID。对象是一个可读的名称。 TableID 对应于与 Object 关联的表,尽管关联的表都以字母 T 开头,如表 T135 或表 T143。

SchemaTable
Object    TableID   /* Object is type varchar, TableID is type int
Form1     135
Form2     143
Form3     321

我想制作一个 SQL 查询,它将根据 Object 的值从这些表中选择内容。这是我到目前为止所拥有的(不起作用):

SELECT Col1, Col2
FROM (
    SELECT (T' + CAST(TableID AS VARCHAR))
    FROM SchemaTable
    WHERE Object = 'Form1'
)Tbl_T
WHERE Col1 IS NOT NULL

我可以使用子查询以这种方式选择表吗?如果没有,您还有什么建议以及如何建议?

非常感谢您的帮助。

编辑

我的问题或疑问似乎不清楚。让我尝试解决这个问题。

我可以像这样直接选择表 T135:

SELECT Col1, Col2
FROM T135
WHERE Col1 IS NOT NULL

但我想做的是根据表SchemaTable 中的列Object 选择表T135。

你看到了吗?我不想从表SchemaTable 中选择值的子表。我只想获取TableID(即135)并从所述表中选择内容(即T135)。表 T135 中没有 TableID 列。 TableID 实际上对应于表的名称。它不用作其他表的键或标识。我认为这就是我在理解我想要完成的目标时感到困惑的地方。

我希望这更清楚。

感谢您的帮助。

【问题讨论】:

  • 您必须使用动态查询。
  • 您可以添加您的预期结果吗?
  • 谢谢你,哈姆雷特。我认为这可以解决问题。

标签: sql sql-server sql-server-2008 dynamic subquery


【解决方案1】:

是的,您可以使用子查询以这种方式选择表。这是另一个例子:

select * from  
(select ndc,client_id,pkg_sz from ABC where pkg_sz=100) dist,  
(select ndc,client_id from XYZ where pkg_sz=500) trns  
where trns.client_id = dist.client_id  
and dist.ndc=trns.ndc;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2021-12-14
    • 2015-08-01
    • 2011-10-09
    相关资源
    最近更新 更多