SQL - 从表中选择列,其中另一个表列值等于列名列表

时间:2012-11-06 18:15:23

标签: sql

看到很多关于基于值解析数据的类似帖子,但没有什么我想从一个包含另一个表的列名的表中获取结果列。例如:

 Select [col1], [col2]
 from Table1
 where (select changes as (col#)
        from table2)

col#是Table1中我想要的列名列表。 Table2更改列是以逗号分隔的列表。我想找到一种方法,可以从Table2获取Table1中列表中的每一列。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您必须即时创建查询。您可以通过以下方式执行此操作:

  1. 首先将数据从changes列提取到您的调用应用程序中,然后从该数据中汇编SQL查询字符串并执行它,或者
  2. 在存储过程中创建动态语句并EXEC它(或任何你的RDBMS等效语句)。
  3. 请注意,如果changes中的数据来自用户输入,那么您将面临一个受伤的世界。

    如果您可以控制架构,我建议您避免这种存储数据的方式。通常,逗号分隔列表只是笨拙并且从根本上违背了数据库的设计目的。对于每个列可能更改(id, col1_changed, col2_changed)或每个更改列(id, changed_col_name)使用单行的一个布尔值的更改表结构在常规查询中将更容易使用。

相关问题