【问题标题】:Get distinct values from each table and each column with SQL Server使用 SQL Server 从每个表和每个列中获取不同的值
【发布时间】:2017-03-29 08:28:02
【问题描述】:

我想遍历给定数据库的每个表,以获取每个 char 字段的唯一值。

我的查询可能类似于:

for each table:
    for each row in table:
       select distinct char_field
       from table
    loop
loop

我该怎么做?

【问题讨论】:

  • 添加一些数据和所需的输出,以便更好地理解场景并提供最合适的问题解决方案。

标签: sql sql-server tsql distinct each


【解决方案1】:

这样试试

DECLARE cur CURSOR FOR
    SELECT 'SELECT DISTINCT ' + QUOTENAME(c.COLUMN_NAME) + 'AS ' + QUOTENAME(TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME) + ' FROM ' + QUOTENAME(TABLE_CATALOG) + '.' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
    FROM INFORMATION_SCHEMA.COLUMNS AS c
    WHERE c.DATA_TYPE LIKE '%char%' 

DECLARE @cmd VARCHAR(MAX);
OPEN cur;

FETCH NEXT FROM cur INTO @cmd;
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @cmd
    EXEC(@cmd);
    FETCH NEXT FROM cur INTO @cmd;
END

CLOSE cur;
DEALLOCATE cur;

此过程打开一个游标,其中包含所有表的所有列,其中数据类型包含char。它将创建一个语句来选择所有不同的值并一个接一个地执行。

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 2016-02-05
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多