Câu trả lời:
thử cái này;
select gid
from `gd`
group by gid
having count(*) > 10
order by lastupdated desc
AND ((stock = 1 OR quantity > 0) OR (COUNT(v.id) > 0)
HAVING variations > 0 OR (stock = 1 OR quantity > 0)
Tôi không chắc chắn về những gì bạn đang cố gắng làm ... có thể một cái gì đó như
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. Dù sao +1 cho cú pháp sạch (có thể là thiết lập của tôi hoặc ms ... ahh tốt).
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
EDIT (nếu bạn chỉ muốn các gids):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Chỉ là phiên bản học thuật mà không có điều khoản:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
Không thể có các hàm tổng hợp (Ví dụ: COUNT, MAX, v.v.) trong mệnh đề WHERE. Do đó, chúng tôi sử dụng mệnh đề HAVING thay thế. Do đó, toàn bộ truy vấn sẽ tương tự như sau:
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;
Tôi nghĩ rằng bạn không thể thêm count()
với where
. bây giờ hãy xem tại sao ....
where
không giống như having
, having
có nghĩa là bạn đang làm việc hoặc giao dịch với nhóm và cùng một công việc đếm, nó cũng đang xử lý cả nhóm,
bây giờ làm thế nào nó được tính là hoạt động như cả nhóm
tạo một bảng và nhập một số id và sau đó sử dụng:
select count(*) from table_name
bạn sẽ tìm thấy tổng giá trị có nghĩa là nó chỉ ra một số nhóm! nên where
không bổ sung với count()
;
COUNT (*) chỉ có thể được sử dụng với HAVING và phải được sử dụng sau câu lệnh GROUP BY Vui lòng tìm ví dụ sau:
SELECT COUNT(*), M_Director.PID FROM Movie
INNER JOIN M_Director ON Movie.MID = M_Director.MID
GROUP BY M_Director.PID
HAVING COUNT(*) > 10
ORDER BY COUNT(*) ASC