2016-05-27 5 views
1

Ich habe eine Tabelle, die wie untenCount Artikel über mehrere Spalten in derselben Tabelle

TableA

------------------------------------ 
id| ColumnA | ColumnB | ColumnC 
------------------------------------ 
1 | A  | B   | B  
2 | B  | D   | D 
3 | C  | E   | A 
------------------------------------ 

Wie sieht das in jeder Spalte die jeweils Vorkommen der einzelnen Elemente zählen?

Das Ergebnis, das ich will, ist wie folgt:

SELECT ColumnA, COUNT(*) 
FROM TableA 
GROUP BY ColumnA 
HAVING COUNT(*) > 0 

Was mehrspaltige:

-------------------- 
Result | Counter 
-------------------- 
A   | 2 
B   | 3 
C   | 1 
D   | 2 
E   | 1 

Für einzelne Spalt ich diese SQL verwenden kann? Jede Hilfe wäre großartig!

+0

Die 'HAVING COUNT (*)> 0 'Teil alles keinen Sinn gar nicht. – jarlh

+0

Hm, du hast gesagt, dass du den stackoverflow durchsucht hast, aber diese Frage erinnert mich an eine ältere Frage [hier] (http://stackoverflow.com/questions/20809639/mysql-counting-distinct-values-on-multiple) -Säulen). Dort fragt jemand auch Werte über mehrere Spalten zu zählen. Dies könnte die Lösung für Ihr Problem sein;) – Otterbein

Antwort

3

Try this;)

select c as Result, count(1) as Counter from (
    select ColumnA c from TableA 
    union all 
    select ColumnB c from TableA 
    union all 
    select ColumnC c from TableA) t 
group by c 
1

kann es wie folgt tun:

SELECT ColumnA as Result, sum(1) as Counter FROM (
    SELECT ColumnA FROM youTable 
    UNION ALL 
    SELECT ColumnB FROM youTable 
    UNION ALL 
    SELECT ColumnC FROM youTable 
) AS res 
GROUP BY ColumnA; 
Verwandte Themen