Я пытаюсь выполнить следующее в MySQL (см. код pseudo
)
SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC
Есть ли способ сделать это, не используя (SELECT...) в предложении WHERE, потому что это может показаться пустой тратой ресурсов.
Вся помощь приветствуется.
Спасибо!
попробуйте это;
select gid
from `gd`
group by gid
having count(*) > 10
order by lastupdated desc
Я не уверен, что вы пытаетесь сделать... может быть, что-то вроде
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. +1 в любом случае для чистого синтаксиса (это может быть моя установка или мс ... аааа)
попробовать
SELECT DISTINCT gid
FROM `gd`
group by gid
having count(*) > 10
ORDER BY max(lastupdated) DESC
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
EDIT (если вы просто хотите получить цифры):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Просто академическая версия без предложения:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
- поиск метеорологических станций с отсутствующими полумесячными записями
SELECT stationid
FROM weather_data
WHERE `Timestamp` LIKE '2011-11-15 %' AND
stationid IN (SELECT `ID` FROM `weather_stations`)
GROUP BY stationid
HAVING COUNT(*) != 48;
- изменение yapiskan с a where.. in.. select
В предложении WHERE не может быть агрегатных функций (пример COUNT, MAX и т.д.). Следовательно, вместо этого мы используем предложение HAVING. Поэтому весь запрос будет похож на этот:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
Я думаю, вы не можете добавить count()
с помощью where
. теперь посмотрим, почему....
where
не является таким же, как having
, having
означает, что вы работаете или работаете с группой и той же работой подсчета, а также со всей группой,
теперь, как считать, что он работает как целая группа
создайте таблицу и введите некоторый идентификатор, а затем используйте:
select count(*) from table_name
вы найдете, что общие значения означают, что это указывает на некоторую группу! поэтому where
добавляется count()
;
AND ((stock = 1 OR quantity > 0) OR (COUNT(v.id) > 0)