Да, я заметил, что это MySQL после того, как я написал скрипт для SQL Server ... но в любом случае вот код на тот случай, если кому-то это понадобится ... или если вы узнаете, как это сделать
declare @position int = 1,
@sql nvarchar(max),
@columnCnt int,
@currentColumn nvarchar(50),
@TableName nvarchar(50) = 'YourTableName',
@DBName nvarchar(50) = 'YourDbName';
if (OBJECT_ID('tempdb..#MyRowCount')) IS NOT NULL DROP TABLE #MyRowCount
CREATE TABLE #MyRowCount (ColumnName nvarchar(50), DistinctCount int, NullCount int)
set @columnCnt = (select MAX(ORDINAL_POSITION) from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TableName and TABLE_CATALOG = @DBName)
WHILE (@position <= @columnCnt)
BEGIN
set @currentColumn = (select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TableName and
TABLE_CATALOG = @DBName and
ORDINAL_POSITION = @position)
set @sql = 'INSERT INTO #MyRowCount (ColumnName, DistinctCount, NullCount)
SELECT ''' + @currentColumn + ''',
(SELECT COUNT(DISTINCT [' + @currentColumn + ']) FROM ' + @TableName + ' where [' + @currentColumn + '] IS NOT NULL),
(SELECT COUNT(*) FROM ' + @TableName + ' where [' + @currentColumn + '] IS NULL)';
-- print @sql;
execute (@sql);
set @position = @position + 1;
END
SELECT * FROM #MyRowCount