строка выбор порядка запроса по строка ;

#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 не печатается