2009-06-16 33 views
99

là một cái gì đó như thể này:Sử dụng DISTINCT và COUNT với nhau trong một truy vấn MySQL

SELECT DISTINCT COUNT(productId) WHERE keyword='$keyword' 

Những gì tôi muốn là để có được số lượng sản phẩm độc đáo Id được liên kết với một từ khóa. Các sản phẩm tương tự có thể được liên kết hai lần với một từ khóa, hoặc nhiều hơn, nhưng tôi muốn chỉ có 1 thời gian được tính cho mỗi ID sản phẩm

Trả lời

221

sử dụng

SELECT COUNT(DISTINCT productId) from table_name WHERE keyword='$keyword' 
+0

Cập nhật câu trả lời vì nó gần như trở thành một câu trả lời tuyệt vời và nó đã được cú pháp không chính xác. –

+0

Im chống lại câu trả lời không cung cấp hiệu suất tối ưu khi nói đến cơ sở dữ liệu. Điều quan trọng là giữ các tiêu chuẩn về hiệu suất. Tôi sẽ đi với câu trả lời của @ alistair-hart. – JDuarteDJ

+0

Người đàn ông tuyệt vời. Nó hoạt động –

30

Bạn đang ở rất gần :-)

select count(distinct productId) from table_name where keyword='$keyword' 
+0

Cập nhật câu trả lời vì câu trả lời gần như là câu trả lời hay và không chính xác về cú pháp. –

+0

Hiệu suất thấp – JDuarteDJ

-4

Không tốt hơn với một nhóm không? Cái gì như:

SELECT COUNT(*) FROM t1 GROUP BY keywork; 
+1

Anh ta muốn số lượng productID riêng biệt. Truy vấn của bạn trả về số hàng cho mỗi từ khóa. – David

41

tôi sẽ làm một cái gì đó như thế này:

Select count(*), productid 
from products 
where keyword = '$keyword' 
group by productid 

rằng sẽ cung cấp cho bạn một danh sách như

count(*) productid 
---------------------- 
5   12345 
3   93884 
9   93493  

này cho phép bạn xem có bao nhiêu mỗi productid biệt ID được liên kết với từ khóa.

+0

Hiệu suất thấp, không thể chấp nhận điều này qua câu trả lời của Alistair. – JDuarteDJ

14

FYI, đây có lẽ nhanh hơn,

SELECT count(1) FROM (SELECT distinct productId WHERE keyword = '$keyword') temp 

hơn thế này,

SELECT COUNT(DISTINCT productId) WHERE keyword='$keyword' 
+15

Bạn có thể giải thích lý do tại sao? Tôi tò mò. – lpacheco

+0

Không chắc chắn nếu nó nhanh hơn, nhưng cách đếm nhiều cột với từ khóa riêng biệt – VladL

+0

Câu trả lời tuyệt vời. Câu trả lời của anh ta nhanh hơn gấp 100 lần trong trường hợp của tôi. Một sự thay đổi nhỏ cho sự hiểu biết @ Alistair của mã là 'SELECT đếm (*) TỪ (SELECT khác biệt productId WHERE từ khóa = '$ keyword') temp' –

5

Cái quái của tất cả các bao phấn làm việc này

nó quá đơn giản

nếu bạn muốn có danh sách bao nhiêu productId trong mỗi khóa từ đây là mã số

SELECT count(productId), keyword FROM `Table_name` GROUP BY keyword; 
+0

Cảm ơn cho rằng bình luận, không phải là câu trả lời thuần túy cho câu hỏi chính xác của mình, nhưng có lẽ những gì anh ta đang tìm kiếm và dù sao cũng hữu ích. – Leo

Các vấn đề liên quan