MySQL क्वेरी में DISTINCT और COUNT का एक साथ उपयोग करना


125

क्या ऐसा कुछ संभव है:

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

मैं जो चाहता हूं वह अद्वितीय उत्पाद Ids की संख्या प्राप्त करना है जो एक कीवर्ड से जुड़े हैं। एक ही उत्पाद एक कीवर्ड, या अधिक के साथ दो बार जुड़ा हो सकता है, लेकिन मैं केवल 1 बार प्रति उत्पाद आईडी गिना जाना चाहूंगा

जवाबों:


277

उपयोग

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

उत्तर को अपडेट करें क्योंकि यह एक महान उत्तर बनने के करीब है और यह वाक्यात्मक रूप से गलत था।
राहुल त्रिपाठी

जब यह डेटाबेस की बात आती है तो ऐसे जवाबों के खिलाफ Im, जो अधिकतम प्रदर्शन नहीं देते हैं। यह इत्र मानकों को बनाए रखने के लिए महत्वपूर्ण है। मैं @ alistair-hart के जवाब के साथ जाऊंगा।
JDuarteDJ

कुछ और खोजते हुए इस पार पहुंचे और कुछ सीखा। मैंने हमेशा इसके साथ किया है SELECT COUNT(DISTINCT(productId)) from table_name WHERE keyword='$keyword'। मुझे आपके संस्करण को दो पारमों में पास करना बेहतर लगता है COUNT( )
Rockin4Life33

मेरे आश्चर्य के लिए, मैंने पाया कि "COUNT" और ओपनिंग कोष्ठक के बीच कोई स्थान नहीं हो सकता है - कम से कम 10.1.4 के संस्करण में MariaDB के।
DRosenfeld

61

मैं ऐसा कुछ करूंगा:

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

कि आप की तरह एक सूची दे देंगे

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

यह आपको यह देखने की अनुमति देता है कि कीवर्ड के साथ प्रत्येक विशिष्ट उत्पाद आईडी कितने जुड़ी हुई है।


31

आप करीब थे :-)

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

उत्तर को अपडेट करें क्योंकि यह एक अच्छा उत्तर बनने के करीब है और यह वाक्यात्मक रूप से गलत था।
राहुल त्रिपाठी

19

FYI करें, यह संभवतः तेज़ है,

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

उसके बाद यह,

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

निश्चित नहीं है कि यह तेज़ है, लेकिन अलग-अलग कीवर्ड के साथ कई कॉलमों को गिनने का तरीका है
व्लाद

शानदार जवाब। उसका जवाब मेरे मामले में कम से कम 100 गुना अधिक तेज है। @ एलिस्टेयर के कोड को समझने के लिए एक मामूली बदलाव हैSELECT count(*) FROM (SELECT distinct productId WHERE keyword = '$keyword') temp
कार्तिकस

6

यह सब क्या नरक काम करते हैं

यह बहुत आसान है

यदि आप प्रत्येक कीवर्ड में कितने productId की सूची चाहते हैं, तो यह कोड है

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

उस टिप्पणी के लिए धन्यवाद, न कि शुद्धतावादी अपने सटीक प्रश्न का उत्तर देता है, लेकिन शायद वह जो खोज रहा है, और वैसे भी उपयोगी है।
सिंह

4

DISTINCT उत्पाद का चयन करना और प्रति उत्पाद का प्रदर्शन करना

इस प्रकार के प्रश्न के बारे में एक अन्य उत्तर के लिए यह उत्पाद नाम पर उत्पाद आधार की गिनती प्राप्त करने के लिए मेरा एक और उत्तर है, जो इस नमूने की तरह नीचे दिया गया है:

तालिका मान

select * FROM Product

गिना उत्पाद का नाम

SELECT DISTINCT(Product_Name),
(SELECT COUNT(Product_Name) 
from Product  WHERE Product_Name = Prod.Product_Name)  
as `Product_Count`
from Product as Prod

रिकॉर्ड गणना: 4; निष्पादन समय: 2ms


-5

क्या यह एक समूह के साथ बेहतर नहीं है? कुछ इस तरह:

SELECT COUNT(*) FROM t1 GROUP BY keywork;

1
वह विशिष्ट productID की संख्या चाहता है। आपकी क्वेरी प्रत्येक कीवर्ड के लिए पंक्तियों की संख्या लौटाती है।
डेविड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.