SQL Server:如何为表的所有列动态添加别名,以从其他表中提取它们

用伪方法,我的目标是- 我要查询的tab1-表 tab_desc-table包含对tab1所有列的描述

从tab1中选择*作为(从tab_desc中选择col_desc,其中* = col_name)

如何将其转换为有效的SQL查询

评论
  • svero
    svero 回复

    您必须使用两个SQL查询来执行此操作。

    One query to get the column alias from tab_desc. Save the result in a variable in your application.

    select col_desc from tab_desc where col_name = ?
    

    然后进行第二次查询以将该字符串用作别名。

    select somecol as `$alias` from tab1
    

    I'm using $alias to signify where you would interpolate your application variable. The syntax depends on what language you use in your app.

    由于您将再次遇到SQL的重要原则,因此需要分两个步骤执行此操作:在查询期间读取的数据不能更改查询本身的语法。

    另一种思考方式是,在为给定查询编写的所有名称,表达式和子句开始读取数据之前,必须将其固定。这包括作为查询一部分的子查询。

    别名算作标识符(即名称)。一旦查询被解析并开始读取数据,您将无法更改别名。因此,在解析查询之前必须固定别名。

    我上面描述的解决方法是将步骤分为两个查询。在格式化第二个查询的语法时,可以使用第一个查询的结果。