Я хочу посчитать как общее количество записей в таблице, так и общее количество записей, соответствующих определенным условиям. Я могу сделать это с двумя отдельными запросами:
SELECT COUNT(*) AS TotalCount FROM MyTable;
SELECT COUNT(*) AS QualifiedCount FROM MyTable
{possible JOIN(s) as well e.g. JOIN MyOtherTable mot ON MyTable.id=mot.id}
WHERE {conditions};
Есть ли способ объединить их в один запрос, чтобы я получил два поля в одной строке?
SELECT {something} AS TotalCount,
{something else} AS QualifiedCount
FROM MyTable {possible JOIN(s)} WHERE {some conditions}
Если нет, я могу выполнить два запроса и обернуть их в транзакцию, чтобы они были согласованы, но я надеялся сделать это с одним.
edit: меня больше всего волнует атомарность; если нужны два оператора sub-SELECT, то это нормально, если есть откуда-то INSERT, это не делает два ответа несовместимыми.
edit 2: ответы CASE полезны, но в моем конкретном случае условия могут включать в себя СОЕДИНЕНИЕ с другой таблицей (забыл упомянуть об этом в моем исходном сообщении, извините), поэтому я предполагаю, что этот подход не будет работать.