sql - 如何列出查询中的列名

标签 sql sql-server

我正在使用 sql server,我被要求只授予查询中涉及的表列。

那么假设我有这个查询 Q 来执行提取:

SELECT 
    A.C1,
    B.C1,
    C.C1 
FROM   
    TABLE1 A 
INNER JOIN 
    TABLE2 B ON A.C2 = B.C2 
INNER JOIN 
    TABLE3 C ON B.C3 = C.C2 

我必须只对列授予 SELECT 权限:

   A.C1
   A.C2
   B.C1
   B.C2
   B.C3
   C.C1
   C.C2

现在我必须以一种无聊的人工方式解析查询,以收集列。

有没有办法,一些系统查询方式,来“查询查询”?一种将查询 Q 放入输入并在输出中获取所涉及列的列表的方法?

非常感谢。

最佳答案

恕我直言,您应该创建一个 view包含实际的限制结果。

类似于:

 CREATE VIEW view_name AS
 SELECT A.C1,
      B.C1,
      C.C1 
 FROM   TABLE1 A 
 INNER JOIN TABLE2 B 
       ON A.C2 = B.C2 
          t_line.dbo.is_pagamentorate.parentlink_recid 
 INNER JOIN TABLE3 C 
       ON B.C3 = C.C2 

关于sql - 如何列出查询中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276064/

相关文章:

sql - 选择另一个表等于的​​位置

javascript - 类似 Twitter 的推文框?

sql - 如何创建带有标识列的表

sql - 如何在SQL中使用小计

node.js - 运行azure函数时找不到mssql Node js包

SQL计算2列的百分比

SQL查询可以在同一个数据表上显示具有空ID和非空ID的数据?

sql - 如何在 SQL 查询中将 URI 作为字符串附加

mysql - 仅当超过 n 行时才删除值较低的行

sql - 获取两个日期列之间差异最小的行