Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА:

Как получить количество строк каждой таблицы БД? 4 года 8 мес. назад #170

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Это простой пример показывает, как можно в SQL Server получить количество строк данных, находящихся в каждой таблице БД. Список таблиц получается из information_schema.tables, на основе которого формирует динамичный запрос, который и выводит количество строк данных каждой найденной таблицы.
-- создаем таблицу в памяти, в ней будут храниться исключения
DECLARE @tbl TABLE (checked nvarchar(255));

-- переменная для хранения динамичного sql-запроса
DECLARE @q nvarchar(max);
SET @q = ''; -- сразу ставим пустую строку, чтобы можно было без проблем выполнять конкатенацию 

-- берем первую таблицу
DECLARE @table nvarchar(255);
SELECT TOP 1 @table = TABLE_NAME FROM information_schema.tables

-- цикл будет работать, пока в последнем запросе есть какие-то данные
WHILE @@ROWCOUNT > 0 BEGIN
  -- формируем запрос на получение количества данных в текущей таблице
  IF @q <> '' SET @q = @q + ', ';
  SET @q = @q + '(SELECT COUNT(*) FROM ' + @table + ') AS [' + @table + ']';
  -- добавляем таблицу в исключения, чтобы не проверять ее повторно
  INSERT INTO @tbl
  SELECT @table;
  -- берем следующую таблицу, игнорируя таблицы в списке исключений
  SELECT TOP 1 @table = TABLE_NAME FROM information_schema.tables
  WHERE TABLE_NAME NOT IN (SELECT checked FROM @tbl);
END;

SET @q = 'SELECT ' + @q;

--print @q; -- debug

exec(@q);

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Модераторы: Дмитрий

О сайте

Строительство индивидуальных домов из лёгкого самана - опыт, советы, методика строительства и подробные инструкции. А также возможность применения альтернативных источников энергии.


Контакты

08340. ул.Салютная 17. с.Гнедын.
Киевская обл. Украина.

+38 067 492 4124.
+38 095 065 8860.

info@okwood.com.ua
www.okwood.com.ua

Местоположения


8PM2+7R Гнедин, Kyiv Oblast