#sql-server #tsql
#sql-сервер #tsql
Вопрос:
Я хочу получить вывод как получить все таблицы из базы данных с именем как ‘T_’. Я написал запрос, он получает все имя таблицы. но я не хочу получать запрос как «выбрать количество (*) из всех таблиц в объединении базы данных»
означает, что я хочу получить
select count(*) from T1 UNION
select count(*) from T2 UNION
select count(*) from T3 UNION...
и так далее
, есть 1000 строк, поэтому я хочу запрос, который будет выводить сам запрос count(*).
select 'select count(*) from ' table_name from INFORMATION_SCHEMA.TABLES where table_type='BASE TABLE'
and left(table_name,2) = 'T_'
order by TABLE_NAME
этот запрос выдает все select count(*) table names like T_*
select 'select count(*) from ' table_name from INFORMATION_SCHEMA.TABLES where table_type='BASE TABLE'
and left(table_name,2) = 'T_'
order by TABLE_NAME
'UNION';
Получение выходных данных
select count(*) from T_T1
select count(*) from T_T2
select count(*) from T_T3
ожидаемый результат
select count(*) from T_T1 UNION
select count(*) from T_T2 UNION
select count(*) from T_T3 UNION
Ответ №1:
order by TABLE_NAME ' UNION'
означает, что вы хотите упорядочить по значению TABLE_NAME
с UNION
привязкой к нему (что ничего не изменит)
Вам нужно поместить UNION
(я на самом деле предлагаю UNION ALL
здесь) в ваш SELECT
: ...table_type='BASE TABLE' N' UNION ALL '
.
Я также предлагаю изменить table_name
на QUOTENAME(table_name)
. Предоставление вам окончательного запроса:
SELECT N'SELECT COUNT(*) FROM' QUOTENAME(TABLE_NAME) NCHAR(13) NCHAR(10) N'UNION ALL'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND LEFT(TABLE_NAME, 2) = 'T_'
ORDER BY TABLE_NAME;
Ответ №2:
select 'select count(*) from ' table_name ' UNION ' from INFORMATION_SCHEMA ...
Комментарии:
1. Найдите время, чтобы объяснить свой ответ здесь @User3070308. ответы только для кода часто не помогают OP узнать, почему ваше решение работает. Спасибо! 🙂
2. причина, по которой ваш скрипт не работает, заключается в том, что вы помещаете
'UNION'
вне скрипта, поэтомуUNION
не печатается