Maison > Questions et réponses > le corps du texte
J'essaie de créer une requête MySQL pour afficher la table où les requêtes de recherche sont stockées. Cette requête tente d'obtenir toutes les lignes correspondant aux critères suivants :
>=
à un rendez-vousCette requête ne fonctionne pas mais devrait donner un aperçu de ce que j'essaie de faire :
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;
Exemple de données
id | Utilisateur | Requête | Date |
---|---|---|---|
1 | 5 | Qu'est-ce qu'un chien | 2021-01-01 |
2 | 5 | Qu'est-ce qu'un chien | 2021-01-01 |
3 | 6 | Qu'est-ce qu'un chien | 2021-01-01 |
4 | 7 | Qu'est-ce qu'un chien | 2021-01-01 |
5 | 7 | Que sont les frères | 2021-01-01 |
Exemple 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;
En utilisant les valeurs définies dans la requête ci-dessus, une seule ligne doit être renvoyée pour la requête "Qu'est-ce qu'un chien", toutes les autres colonnes sont sans importance.
Je sais que vous pouvez GROUPER PAR des colonnes séparées avec des virgules, mais je n'arrive pas à comprendre comment définir des valeurs différentes pour chaque colonne.
P粉8183174102024-02-27 00:58:40
Vous pouvez définir les deux conditions dans la même clause HAVING
:
SELECT `query` FROM `analytics` WHERE `date` >= '2021-01-01' GROUP BY `query` HAVING COUNT(*) >= 3 AND COUNT(DISTINCT `user`) >= 2;