0

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

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

col# 是我想要的 Table1 中的列名列表。Table2 更改列是一个逗号分隔的列表。我想找到一种方法,能够从 table2 的列表中获取 Table1 中的每一列。任何帮助是极大的赞赏。

4

1 回答 1

0

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

  1. 首先将列中的数据提取changes到调用应用程序中,然后从该数据中组装一个 SQL 查询字符串并执行它,或者
  2. 在存储过程中创建动态语句并EXEC对其进行 ing(或任何您的 RDBMS 的等效语句)。

请注意,如果数据changes来自用户输入,那么您将面临一个痛苦的世界。

如果您可以控制架构,我建议您避免这种存储数据的方式。一般来说,逗号分隔的列表很笨拙,并且从根本上违背了数据库的设计目的。一个变化表结构,每列可以改变一个布尔值,(id, col1_changed, col2_changed)或者每个改变的列只有一行,(id, changed_col_name)在普通查询中使用起来会容易得多。

于 2012-11-06T18:20:37.673 回答