Requête MySQL pour obtenir nombre de valeurs uniques?
Hits Table:
hid | lid | IP
1 | 1 | 123.123.123.123
2 | 1 | 123.123.123.123
3 | 2 | 123.123.123.123
4 | 2 | 123.123.123.123
5 | 2 | 123.123.123.124
6 | 2 | 123.123.123.124
7 | 3 | 123.123.123.124
8 | 3 | 123.123.123.124
9 | 3 | 123.123.123.124
Comme vous pouvez le voir, il sont les suivantes unique hits pour les différents couvercle:
lid 1: 1 unique hit
lid 2: 2 unique hits
lid 3: 1 unique hit
Donc en gros, j'ai besoin d'une requête qui retourne les suivantes:
lid | uhits |
1 | 1 |
2 | 2 |
3 | 1 |
Ce que quelqu'un sait comment l'obtenir?
OriginalL'auteur coderama | 2010-05-14
Vous devez vous connecter pour publier un commentaire.
+1 pour une bonne réponse (et vous me battre pour elle, trop). Pardonnez mon montage, mais j'ai pris la liberté d'enlever un extra (asymétrique) fermer la parenthèse.
OriginalL'auteur Lucio M. Tato
Jusqu'à ce que vous commencer à entrer dans vraiment compliqué requêtes SQL est faite de sorte qu'il se lit bien, ressemble à une phrase. Alors d'abord, si vous pouvez décrire exactement ce que vous voulez de votre requête, vous avez déjà à moitié écrit le SQL.
Dans ce cas, vous pouvez décrire votre problème comme:
La seule chose qui reste est de traduire cela en utilisant des mots-clés SQL. Le plus important ici:
SELECT
COUNT
DISTINCT
SELECT <aggregate function>..GROUP BY <field>
Donc, votre phrase ci-dessus commence à ressembler à:
Supprimant les mots, et le nettoyage à l'utilisation de la syntaxe SQL, les feuilles de la requête finale:
OriginalL'auteur lc.
OriginalL'auteur Thea
Vous avez besoin d'utiliser group by:
En fait, groupe de en fait distincts.
OriginalL'auteur Dewfy