Hãy tưởng tượng tôi có bảng như thế này:Làm thế nào để đếm các bản ghi duy nhất và nhận được số lượng các đơn này trong bảng bằng cách sử dụng SQL?
id: Sản phẩm: shop_id
1: Bóng rổ: 41
2: Bóng đá: 41
3: Rocket: 45
4: Ô tô: 86
5: Máy bay: 86
Bây giờ, đây là một ví dụ về trung tâm internet lớn, nơi có các cửa hàng bán cho một khách hàng, vì vậy khách hàng có thể chọn nhiều sản phẩm hơn từ mỗi cửa hàng và mua trong một giỏ.
Tuy nhiên, tôi không chắc liệu có bất kỳ cú pháp SQL nào cho phép tôi chỉ nhận các shop_ids độc đáo và tổng số sản phẩm của cửa hàng đó trong giỏ hàng của khách hàng hay không. Vì vậy, tôi muốn có được một cái gì đó như:
Cửa hàng 41 có 2 sản phẩm
Cửa hàng 45 một sản phẩm
Cửa hàng 86 sản phẩm hai
tôi có thể làm cho các truy vấn SQL để múc qua bảng để làm cho một số loại của ['shop_id'] ['number_of_products'] biến mảng sẽ lưu trữ tất cả các cửa hàng của sản phẩm, sau đó "duy nhất chúng" - lên và đếm bao nhiêu lần tôi đã phải cắt thêm một shop_id ra để có một số còn lại nhưng điều đó có vẻ như rất nhiều kịch bản vô dụng.
Nếu bạn có một số ý tưởng tốt đẹp và gọn gàng, hãy cho tôi biết.
(1) sau khi Đếm có nghĩa là tham số nào sau khi chọn SELECT sẽ được tính? – Skuta
Không, (1) không phải là tham chiếu đến bất kỳ cột nào, nó chỉ là giá trị số nguyên 1. Nó điển hình hơn khi sử dụng COUNT (*) hoặc COUNT (tên cột). Glomek đang sử dụng COUNT (1) làm giá trị số nguyên không đổi, bởi vì một số người tin rằng điều này nhanh hơn so với tham chiếu một cột. –
Trình tối ưu hóa * nên * chú ý đến việc đếm (*) mất nhiều thời gian khi đếm (1). Tôi đoán một số người tối ưu hóa thì không. – yfeldblum