suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann man in MySQL mehrere Spalten mit mehreren HAVING-Werten nach GROUP BY gruppieren?

Ich versuche, eine MySQL-Abfrage zu erstellen, um die Tabelle anzuzeigen, in der Suchanfragen gespeichert sind. Diese Abfrage versucht, alle Zeilen abzurufen, die den folgenden Kriterien entsprechen:

Diese Abfrage funktioniert nicht, sollte aber einen Überblick darüber geben, was ich versuche:

SELECT 
  * 
FROM 
  `analytics` 
WHERE 
  `date` >= '2021-01-01' 
GROUP BY 
  `query` 
HAVING 
  COUNT(*) >= 3 
  AND 
GROUP BY 
  `user` 
HAVING 
  COUNT(*) >= 2 
ORDER BY 
  id DESC;

Beispieldaten

2021-01-0125Was ist ein Hund? 32021-01-0147Was ist ein Hund? 72021-01-01Beispiel SQL
SELECT 
  * 
FROM 
  analytics 
WHERE 
  date >= '2021-01-01' 
GROUP BY 
  query 
HAVING 
  COUNT(*) >= 3 
  AND 
GROUP BY 
  user 
HAVING 
  COUNT(*) >= 2 
ORDER BY 
  id DESC;
id Benutzer Abfrage Datum
1 5 Was ist ein Hund?
2021-01-01
6 Was ist ein Hund?
2021-01-01 5
Was sind Brüder?
Mit den in der obigen Abfrage festgelegten Werten sollte für die Abfrage „Was ist ein Hund“ eine einzelne Zeile zurückgegeben werden, alle anderen Spalten sind unwichtig.

Ich weiß, dass Sie GRUPPE NACH-Spalten mit Kommas trennen können, aber ich kann anscheinend nicht herausfinden, wie ich für jede Spalte unterschiedliche Werte festlegen kann.

P粉775723722P粉775723722266 Tage vor430

Antworte allen(1)Ich werde antworten

  • P粉818317410

    P粉8183174102024-02-27 00:58:40

    您可以在同一个 HAVING 子句中设置这两个条件:

    SELECT `query` 
    FROM `analytics` 
    WHERE `date` >= '2021-01-01' 
    GROUP BY `query`
    HAVING COUNT(*) >= 3 AND COUNT(DISTINCT `user`) >= 2;

    Antwort
    0
  • StornierenAntwort