Подсчитывает несколько таблиц и возвращает данные в нескольких строках в SQL

#sql #db2

#sql #db2

Вопрос:

Я пытаюсь изучить SQL и в настоящее время изучаю функцию COUNT. Я хочу протестировать извлечение данных из нескольких таблиц и хочу вернуть результирующий набор, например:

 | tablename | row_count |
| Computers | 2000      |
| Buildings | 37        |
  

До сих пор я не нашел способа извлечь информацию и создать такое представление.

Ответ №1:

Используйте объединение и количество (*) с (постоянной) меткой:

 select 'Computers' as tablename, count(*) as row_count from Computers
union all
select 'Buildings' as tablename, count(*) as row_count from Buildings
  

Обратите внимание, что использование union all (вместо просто union ) означает, что возвращаемые строки останутся в том порядке, в котором они выбраны в запросе.

Комментарии:

1. 1 но чтобы сделать его равным запросу OP, вы должны были указать псевдонимы для столбцов 🙂

2. Вы имели в виду from Computers и from Buildings , верно? Это имена таблиц

3. @Icarus Технически название таблиц не было задано OP. То, что он дал, было ярлыками. Старая школьная БД могла бы назвать их tblComputers и tblBuildings

4. @xanatos насколько я понял, вопрос заключается в том, что OP хочет знать, сколько записей имеется в табличных компьютерах и в табличных зданиях. Вот почему я сделал свой комментарий. Итак, я ожидал select 'Computers' as tablename, count(*) from Computers UNION ALL select 'Buildings' as tablename, count(*) from Buildings

5. @Icarus Имейте в виду, что (из того, что я знаю) DB2 имеет странный синтаксис для псевдонимов столбцов. 'Computers' "tablename", count(*) "row_count"