2011-02-01 6 views
5

स्पष्ट रूप से शीर्षक में क्वेरी काम नहीं करती है, लेकिन यह एक बेवकूफ़ तरीके से चित्रित कर सकती है, जो मैं करना चाहता हूं। मेरे पास एक सारणी है जिसमें एक आईडी कॉलम द्वारा पहचाने गए कुछ उपयोगकर्ता शामिल हैं। यह आईडी डेटाबेस के भीतर अद्वितीय नहीं है। यह उस उपयोगकर्ता को चिह्नित करता है जिसमें मेरी तालिका में एकाधिक रिकॉर्ड हो सकते हैं।चयन आईडी जहां COUNT (*)> एक्स? - तालिका में एक्स से अधिक रिकॉर्ड वाले किसी भी उपयोगकर्ता से रिकॉर्ड कैसे प्राप्त करें?

मैं सभी उपयोगकर्ताओं (आईडी द्वारा पहचाना गया) का पूरा रिकॉर्ड कैसे दिखा सकता हूं जिसमें मेरी तालिका में 10 से अधिक रिकॉर्ड हैं?

CREATE TABLE mytable_clean AS 
SELECT * FROM mytable WHERE id IN(
SELECT id FROM 
(SELECT id,COUNT(*) AS appearance 
FROM mytable 
GROUP BY id) AS id_count 
WHERE id_count.appearance > 9) 

यह काम करता है:

उत्तर

5

उपयोग के बजाय जहां होने:

SELECT id 
    FROM (
     SELECT id, COUNT(*) as cnt 
     FROM sowewhere 
     GROUP BY id 
     HAVING cnt > 1 
    ) temp_table 
+0

यह एक यहाँ वास्तव में तेजी से और अपनी क्वेरी के रूप में बिल्कुल वैसा ही परिणाम है। हालांकि यह पाठ्यक्रम की अधिक सुरुचिपूर्ण है;)। ईश्वर के दृष्टिकोण की तुलना में हैविंग में इस छोटे से अंतर का इतना अंतर क्यों है? –

+0

यह मेरे दृष्टिकोण के समान सटीक है, सिवाय इसके कि मेरे आस-पास अतिरिक्त चयन कथन नहीं है। आपको अतिरिक्त चयन की आवश्यकता क्यों है? – anothershrubery

+0

मुझे इसकी आवश्यकता नहीं है, यह आपको बाहरी चयन के साथ गैर-समेकित कॉलम द्वारा क्रमबद्ध करने की अनुमति देता है। –

0
यहाँ

कैसे है। यह धीमा नहीं है, लेकिन मेरे लिए थोड़ा बेकार लग रहा है। बेहतर समाधान का स्वागत करते हैं :)

1
SELECT id, COUNT(*) FROM Table GROUP BY id HAVING COUNT(*) > 10 
+0

शुरुआत से COUNT (*) को हटाएं यदि आप बस आईडी चाहते हैं, लेकिन मैंने इसे तालिका में प्रत्येक आईडी के लिए कुल संख्या दिखाने के लिए वहां रखा है। – anothershrubery

2
SELECT * FROM user 
WHERE id IN (SELECT id FROM user GROUP BY id HAVING COUNT(*) > 10) 
+0

मैं वास्तव में क्यों नहीं बता सकता हूं, लेकिन यह वास्तव में मेरी तुलना में काफी लंबा है। –

+0

@ ran2 - लंबा? आपका क्या अर्थ है? धीरे ?? – Ishtar

+0

बांधना। मुझे नहीं पता कि जब मैंने लिखा था कि मैं क्या सोच रहा था। शायद मैं लिखना चाहता था कि यह मेरे से अधिक समय लेता है। अच्छा अनुमान है, हालांकि;) –

संबंधित मुद्दे