SQL Union, вторая часть запроса не исполняется

355
30 декабря 2016, 11:08
SELECT COUNT(*) AS `ALL` 
FROM `logs` WHERE `base` = 1 
UNION  
COUNT(*) AS `today` 
FROM `logs` 
WHERE `base` = 1 
AND `unixTime` - 86400 > 1482908996

Итогом возвращается только набор из ALL, без today.

В чем может быть проблема, что я делаю не так?

Answer 1

Используйте UNION ALL. Простой UNION — это UNION DISTINCT.

Также возможно, что Вы просто забываете, что получаете ДВЕ записи из одного поля каждая, и смотрите только первую запись.

И ещё: давать имя полю второго запроса бессмысленно, оно будет проигнорировано.

UPD: Если же нужно получить ОДНУ запись с ДВУМЯ полями, то

SELECT COUNT(*) AS `ALL`,
       SUM(CASE WHEN `unixTime` - 86400 > 1482908996 THEN 1 ELSE 0 END) AS `today`
FROM `logs` 
WHERE `base` = 1

UPD2: Поскольку СУБД - MySQL, запрос можно упростить:

SELECT COUNT(*) AS `ALL`,
       SUM(`unixTime` - 86400 > 1482908996) AS `today`
FROM `logs` 
WHERE `base` = 1
READ ALSO
Ограничение MySQL

Ограничение MySQL

Есть поле "процент надбавки" - "percentage of allowances"

393
SQL получить названия поля с PRIMARY KEY

SQL получить названия поля с PRIMARY KEY

Есть произвольные таблицы и необходимо узнать название поля c PRIMARY KEY, как это можно сделать SQL (использую MySQL) запросом или средствами Python v3 и библиотечки...

385
Несколько методов на одну URL

Несколько методов на одну URL

Нужно написать API, и у клиента есть примеры запросов, которые должны быть

506
Связь ядра приложения Android с интерфейсом

Связь ядра приложения Android с интерфейсом

Только начал работать с Android и сразу наткнулся на проблему: как управлять элементами UI из других классов?

360