Извлечение количества строк из таблицы sql - PullRequest
2 голосов
/ 17 марта 2020

Допустим, у нас есть запрос SQL, например select * from employees. Если я хочу знать только количество строк, то это можно сделать с помощью select count(*) from employees.

. Проблема в том, что для этого требуется изменить запрос SQL, что может потребовать некоторого анализа. Если запрос представляет собой строку SQL_request, я хотел бы написать что-то общее c, простое и надежное, например: select count(*) from (SQL_request), но полученный запрос (то есть select count(*) from (select * from employees)) не является правильным.

Следует отметить, что в некоторых случаях мы можем сделать такую ​​конструкцию. Например, если нужно получить первые 1000 строк запроса, можно выполнить (SQL_request) limit 1000.

. Может ли быть способ инкапсулировать обобщенный запрос таблицы c SQL, чтобы можно было получить число? строк?

Ответы [ 2 ]

2 голосов
/ 17 марта 2020

... но полученный в результате запрос select count(*) from (select * from employees)) не является правильным ...

Вы используете свой запрос как "табличное выражение", но забыли присвойте ему псевдоним . Попробуйте:

select count(*) from (select * from employees)) x

См. x в конце?

0 голосов
/ 17 марта 2020

Это зависит от базы данных. Иногда этого достаточно:

select count(*)
from (<request>) t;

Следующие проблемы приходят на ум:

  1. Если «запрос» заканчивается order by, некоторые базы данных не разрешат его .
  2. Если «запрос» имеет CTE, некоторые базы данных не разрешат его.
  3. Если «запрос» присваивает значения переменных, некоторые базы данных не разрешат его.

Это приходит на ум. Для многих целей вы можете инкапсулировать, используя подзапрос или CTE.

...