2009-11-30 11 views
7

मेरे पास एक एसक्यूएल है:MySQL: गिनती के साथ रिकॉर्ड कैसे प्राप्त करें> 1?

SELECT *, count(*) as cc 
FROM manytomany 
GROUP BY aid, bid 
ORDER BY cc DESC 

जो गिनती # के साथ सभी रिकॉर्ड वापस करता है।

हालांकि, मैं क्या कर सकता हूं अगर मैं केवल गिनती के साथ प्राप्त करना चाहता हूं> 1?

उत्तर

20
SELECT *, count(*) as cc 
FROM manytomany 
GROUP BY aid, bid 
HAVING 1 < count(*) 
ORDER BY cc DESC 
+2

मैं इसे के रूप में 'होने 1 <गिनती (*)', लेकिन यह काम करता है कभी नहीं लिखा है। –

+1

आप अभिव्यक्ति के बाईं ओर 1 क्यों रखेंगे? निश्चित रूप से, यह तार्किक रूप से सुसंगत है, लेकिन केवल उत्सुक ... – gahooa

+1

पठनीयता। अगर इन्फिक्स ऑपरेटर अभिव्यक्ति की शुरुआत के करीब है तो अभिव्यक्ति की संरचना को जल्दी से समझना आसान है: '1 'के बजाय' 1' –

2

आप एक HAVING खंड की जरूरत है, उदाहरण के लिए:

SELECT *, count(*) as cc 
FROM manytomany 
GROUP BY aid, bid 
HAVING COUNT(*) > 1 
ORDER BY cc DESC 

यहाँ कुछ background है।

1
SELECT *, count(*) as cc 
FROM manytomany 
GROUP BY aid, bid 
HAVING COUNT(*) > 1 
ORDER BY cc DESC 

मैं MySQL का उपयोग नहीं करता, लेकिन इसे समय के साथ HAVING -it का समर्थन करना चाहिए।

0

HAVING खंड

SELECT *, count(*) as cc 
    FROM manytomany 
    GROUP BY aid, bid 
    HAVING cc > 1 
    ORDER BY cc DESC 
2

आप होने खंड का उपयोग करें।

SELECT *, count(*) as cc 
FROM manytomany 
GROUP BY aid, bid 
HAVING count(*) > 1 
ORDER BY cc DESC 
1
SELECT *, count(*) as cc 
FROM manytomany 
GROUP BY aid, bid 
HAVING cc>1 
ORDER BY cc DESC 
संबंधित मुद्दे