在一个表的每个列中选择不重复的表,以返回多个表

时间:2018-12-03 18:30:53

标签: sql sql-server tsql

我想获得一个更简单的查询,该查询遍历表的所有列,并为每个列返回相同数量的表。

例如...

UIImageWriteToSavedPhotosAlbum

给出了我想要的结果,但是我必须输入每列。我该如何编写一个查询,遍历所有列并获得相同的结果,而不必执行此操作?

2 个答案:

答案 0 :(得分:0)

为此,您需要生成并执行动态SQL。

查询sys表/视图以获取tbl中的所有列,并构建一个SQL字符串,该SQL字符串为返回的每个列发出SELECT命令。

然后执行SQL字符串。

答案 1 :(得分:0)

您可以尝试一下。

SELECT 
  STUFF((
    SELECT ' GO ' + CONCAT('SELECT DISTINCT ',col.name,' FROM tbl') from sys.columns col
left join sys.tables tab on tab.object_id=col.object_id
where tab.name='tbl'
    FOR XML PATH (''))
  ,2,2,'') AS Names
FROM tbl t1

它将动态生成查询。