Comment sélectionner les différentes lignes sans utiliser l'instruction group by
A B C
1 1 1
1 1 1
2 2 2
2 2 2
3 3 3
3 3 3
4 4 4
4 4 4
5 5 5
5 5 5
5 5 5
6 6 6
6 6 6
Je suis de sortie uniquement les lignes distinctes, sans l'aide de l'instruction group by. Je ne peux pas utiliser group by, parce qu'il rend mysql accrocher. Il devrait donc revenir
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
Je suis en utilisant DISTINCTES pour une jointure interne.Cela ne fonctionne pas non plus:
SELECT DISTINCT * FROM TABLEA inner join TABLEB on TABLEA.A = TABLEB.A
"Je ne peux pas utiliser group by, parce qu'il rend mysql accrocher." Euh..... quelqu'un a un verrou peut-être? Si
Pas de serrures suite sur mon processlist. Je ne suis pas sûr pourquoi.
Combien de lignes sont là, dans votre vraie table? Pouvez-vous nous montrer la requête qui fait que MySQL pendre?
Peut-être que votre base de données est endommagé ou quelque chose. Il n'y a aucune raison pourquoi GROUP BY ne devrait pas fonctionner ici (à l'aide de différent, c'est plus concis solution, mais cela ne résout pas votre problème).
Avez-vous essayé de SÉLECTIONNER DISTINCTS A,B,C DE la TABLEA inner join TABLEB sur TABLEA.A = TABLEB.Une ; ? Ceci devrait faire l'affaire conformément à la documentation. Cf ma réponse. DISTINCTS A,B,C n'est pas le même comme DISTINCT *
GROUP BY
ne fonctionne pas, vous devriez essayer de trouver pourquoi. Il est peu probable que le fait d'essayer de requêtes différentes pour résoudre le problème.Pas de serrures suite sur mon processlist. Je ne suis pas sûr pourquoi.
Combien de lignes sont là, dans votre vraie table? Pouvez-vous nous montrer la requête qui fait que MySQL pendre?
Peut-être que votre base de données est endommagé ou quelque chose. Il n'y a aucune raison pourquoi GROUP BY ne devrait pas fonctionner ici (à l'aide de différent, c'est plus concis solution, mais cela ne résout pas votre problème).
Avez-vous essayé de SÉLECTIONNER DISTINCTS A,B,C DE la TABLEA inner join TABLEB sur TABLEA.A = TABLEB.Une ; ? Ceci devrait faire l'affaire conformément à la documentation. Cf ma réponse. DISTINCTS A,B,C n'est pas le même comme DISTINCT *
OriginalL'auteur cool_cs | 2012-06-06
Vous devez vous connecter pour publier un commentaire.
Selon la documentation de mysql, DISTINCTES spécifie la suppression des doublons de lignes du jeu de résultats (http://dev.mysql.com/doc/refman/5.0/en/select.html)
J'ai créé un échantillon sur jsfiddle et il fonctionne à mon humble avis
n'hésitez pas à expérimenter sur ce SQLFiddle.
avez-vous d'autres colonnes ou sont A, B et C le seul colonnes de ce que j'ai compris pour ma réponse ?
Je fais select distinct * from table et j'obtiens les mêmes lignes que l'original
combien de colonnes avez-vous ? Si vous avez une colonne avec un id unique, alors c'est normal que SELECT DISTINCT * from TABLE vous donne tous les rangées d'origine. Veuillez préciser dans votre question.
J'ai comme 10 colonnes mais je suis en utilisant distinctes avec une jointure interne. Les œuvres distinctes, pour une seule table, mais pas pour un intérieur jointure de deux tables. Donc SELECT distinct * from tableA inner join tableB... ne fonctionne pas
OriginalL'auteur Jerome WAGNER
Cela peut totalement vous choquer mais que MySQL utilise le GROUPE EN sous le capot pour exécuter DISTINCTES !!!
Ici est quelque chose que vous pouvez essayer de
Si la table est appelé
mytable
, faire ces deux choses:De la première exécution de cette
Deuxième, exécutez cette requête
GROUPE de EN fait, il fonctionne mieux avec un indice !!!
Voici un exemple de code pour prouver que cela fonctionne
Lui donner un essai !!!
Trois questions pour vous : 1) le nombre de lignes à votre table? 2) Quand vous dites
distinct row
, ne vous signifient littéralement toutes les colonnes ou une seule colonne? 3) Mai nous s'il vous plaît voir l'instruction CREATE TABLE pour votre table?OriginalL'auteur RolandoMySQLDBA
SI vous (ou quelqu'un d'autre) veut vraiment obtenir distinctes resutl sans aide particulière ou une instruction GROUP BY, cela peut être le chemin:
C'est plutôt une étrange chose, bien que.
OriginalL'auteur dpelisek
le mot-clé DISTINCT est-ce que vous voulez. I. e., si le nom de votre table est Un,
select distinct * from A
fera l'affaire.Cf. manuel mysql: http://dev.mysql.com/doc/refman/5.0/en/select.html
OriginalL'auteur gexicide