2017-02-01 2 views
-3

Ich versuche, es nur als 1 und App-ID gezählt werden zusammenzufassen duplizieren ein Feld, wenn die Bedingungsfeld-ID ist gleich 1.Was ist die gültige Syntaxabfrage dafür?

SELECT SUM(IF(PU.field_id IS DISTINCT AND PU.app_id =1,1,0)) as "With Reco" FROM tbl.PutUser. 

ich für einige weiß, dass dies nur ein Stück Kuchen .

+2

Ich denke, Sie sollten eine andere Frage mit Beispieldaten und gewünschten Ergebnissen stellen. –

+1

Beispieldaten und erwartete Ausgabe würden besser veranschaulichen, was Sie erreichen möchten. – spencer7593

Antwort

1

Wir nutzen die MySQL-spezifische IF() Funktion,

SELECT COUNT(DISTINCT IF(pu.app_id=1,pu.field_id,NULL)) AS `With Reco` 
    FROM mytable pu 

oder ein Äquivalent, ANSI-Standards kompatibel CASE Ausdruck

SELECT COUNT(DISTINCT CASE WHEN pu.app_id=1 THEN pu.field_id END) 

NULL zurück, wenn die Bedingungen, die wir aren testen wollen‘ t zufrieden, und andernfalls den Ausdruck zurückgeben (field_id) Wir möchten eine Anzahl von verschiedenen Werten erhalten, wenn die Bedingungen erfüllt sind. Dann können wir den Ausdruck in ein COUNT(DISTINCT) Aggregat einhüllen.

Für die Prüfung, fallen die COUNT (DISTINCT) Aggregat, und geben die einzelnen Reihen ...

SELECT pu.app_id 
    , pu.field_id 
    , IF(pu.app_id=1,pu.field_id,NULL) AS foo 
    FROM mytable pu 
ORDER BY ... 
LIMIT 80 

Das ist mein bestes Verständnis von dem, was ihr bittet.

Wenn Sie das nicht möchten, sollten Sie einige Beispieldaten und die erwartete Ausgabe Ihrer Abfrage bereitstellen.

+0

perfekt, genau wonach ich gesucht habe. –

Verwandte Themen