2009-11-30 5 views
7

Ho uno sql come questo:MySQL: come ottenere record con conteggio> 1?

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

che restituiscono tutti i record con il conteggio #.

tuttavia, cosa posso fare se voglio ottenere solo quelli con conteggio> 1?

risposta

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

Non ho mai scritto come 'AVERE 1

+1

Perché dovresti mettere il 1 sul lato sinistro dell'espressione? Certo, è logicamente coerente, ma solo curioso ... leggibilità – gahooa

+1

. è più facile cogliere rapidamente la struttura dell'espressione se l'operatore infisso è più vicino all'inizio dell'espressione: '1 1' –

2

Hai bisogno di un clausola di HAVING, ad esempio:

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

Ecco alcuni background.

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

Non faccio uso di MySQL, ma dovrebbe supporto avente -ha stato intorno per lungo tempo.

0

Il HAVING clausola

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

Si utilizza la clausola having.

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