Bonjours
comment faire une requete qui retourne les valeurs répetées d'un champs dans une table
(exp: le champs 'mat contient {11,12,14,11,13,14} ma requete doit retourner
11 et 14)
merci
Bonjours
comment faire une requete qui retourne les valeurs répetées d'un champs dans une table
(exp: le champs 'mat contient {11,12,14,11,13,14} ma requete doit retourner
11 et 14)
merci
une requête select avec un Group By et un Having.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Mat FROM MaTable GROUP BY mat HAVING (count(mat)>1);
La requête SQL suivante fonctionne également
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT Mat FROM MaTable GROUP BY mat HAVING (count(*)>1);
Envoyé par sillycoder
Moi je mettrais
count(1) => ca lit pas les champs donc c'est plus rapide...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Mat FROM MaTable GROUP BY mat HAVING (count(1 )>=2);
>=2 ... si je me souviens bien le having prefere ca ....
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
Envoyé par miloux32
avec quel sgbd ?
le premier avec tous ....Envoyé par Mathusalem
count(*) ca equivaut a faire "count(unchamp)" donc il a besoin de parcourir le bloc pour avoir la valeur du champ ....
count(1) => ben il lit 1 donc pas de lecture de champs .....
pour le having , je crois me souvenir que la clause "=" (ou >=) permet d'utiliser les index etc ...
je sais que c'est bon en oracle et en principe ca doit etre bon pour les autres ..( en plus ca coute rien de faire ca )
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
Je suis fort sceptique
En théorie :
COUNT(*) compte le nombre de lignes, sans s'inquiéter de leur contenu
COUNT(colonne) compte le nombre de lignes où colonne n'est pas NULL
COUNT(DISTINCT colonne) compte le nombre de valeurs distinctes de colonne, en excluant les NULL
Donc COUNT(1) ne devrait pas être très différent de COUNT(*), sinon en rajoutant un test pour la non nullité de la valeur 1
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Ben je tiens ca d'un expert DBA oracle qui m'a fait une formation de tuning oracle ..... j'en discuterais à l'occasionEnvoyé par al1_24
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
Je ne travaille pas sur Oracle. Je ne connais donc pas bien les spécificités de ce SGBD.
Je viens de m'amuser ici à faire quelques tests sur une petite table de 250 millions de lignes, sans index unique *, avec entre autres une colonne Commentaire VARCHAR(2500)...
Temps d'exécution identique sur les quatre requêtes : 45 secondes, à 1 ou deux secondes près :
* Avec un index unique, la table n'est pas balayée mais seulement l'index, donc une poignée de secondes d'exécution !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT COUNT(*) FROM table; SELECT COUNT(1) FROM table; SELECT SUM(1) FROM table; SELECT COUNT(commentaire) FROM table;
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Count(*) lit bien le bloc entier
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
C'est quoi un bloc ?Envoyé par Yanika_bzh
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager