SÉLECTIONNEZ UNION DISTINCTES
Comment dois-je effectuer une opération DISTINCTE sur une seule colonne, après qu'un SYNDICAT est-il effectué?
T1
--
ID Value
1 1
2 2
3 3
T2
--
ID Value
1 2
4 4
5 5
Je suis en train de retourner la table:
ID Value
1 1
2 2
3 3
4 4
5 5
J'ai essayé:
SELECT DISTINCT ID, Value
FROM (SELECT*FROM T1 UNION SELECT*FROM T2) AS T3
Cela ne semble pas fonctionner.
"Cela ne semble pas fonctionner." - de quelle manière?
Vous n'êtes pas en nous donnant tous les détails, la valeur doit toujours être le même que le champ 1, valeur minimale, valeur maximale, valeur aléatoire...de Toute façon distincte est sur tous les domaines, pas seulement dans un champ.
Voir ma réponse pour une meilleure réponse que celle que vous avez sélectionnée
Vous n'êtes pas en nous donnant tous les détails, la valeur doit toujours être le même que le champ 1, valeur minimale, valeur maximale, valeur aléatoire...de Toute façon distincte est sur tous les domaines, pas seulement dans un champ.
Voir ma réponse pour une meilleure réponse que celle que vous avez sélectionnée
OriginalL'auteur user1124535 | 2012-01-09
Vous devez vous connecter pour publier un commentaire.
Autant que je peux dire, il n'y a pas "d'une colonne
distinct
":distinct
est toujours appliqué à l'ensemble d'un enregistrement (sauf si elle est utilisée dans un agrégat commecount(distinct name)
). La raison pour cela est, SQL ne peut pas deviner que les valeurs deValue
de congé pour vous—et qui est en baisse. C'est quelque chose que vous avez besoin de définir par vous-même.Essayez d'utiliser
GROUP BY
pour assurerID
n'est pas répété, et un ensemble (iciMIN
, comme dans votre exemple, c'était le minimum qui a survécu) pour sélectionner une valeur particulière deValue
:Doit être exactement ce dont vous avez besoin. C'est, ce n'est pas la même requête, et il n'y a pas
distinct
—mais c'est une requête qui permettrait le retour à ce qui est indiqué dans l'exemple.Je vous suggère de l'aide
UNION ALL
dans la sous-requête comme il n'y a pas de raison d'en faire unDISTINCT
deux fois.Je suis sûr qu'il ne l'est pas—mais c'est une requête qui permettrait le retour à ce qui est indiqué dans l'exemple.
Il n'est pas, mais il va faire ce que l'OP dit expressément qu'il voulait dans son "je suis en train de retourner à la table" la table.
vrai, juste une seconde
OriginalL'auteur alf
Pourquoi êtes-vous en utilisant une sous-requête? Cela va fonctionner:
UNION
supprime les doublons. (UNION ALL
ne)Ce doit être la accepté de répondre.
Si vous avez de l'UNION des registres [1, 1] et [1, 2], vous obtiendrez à la fois dans le jeu de résultats. L'OP ne voulait pas de répétitions de la première colonne. Évidemment, cette réponse a été utile pour beaucoup de gens, mais je ne pense pas qu'il répond à ce qui a été demandé.
Effectivement, vous avez raison, maintenant que j'examine OP données de l'exemple. Cette requête est la refonte de l'équivalent de l'OP, de la requête.
OriginalL'auteur Bohemian
Cela - même si ce fil est vieux peut-être une solution pour la question de l'OP, même s'il peut être considéré comme sale.
Nous sélectionnons tous les tuples de la première table,
ensuite, l'ajout d' (union) avec les n-uplets de la table seconde limités à ceux qui ne correspond pas avoir le champ spécifique adapté dans le premier tableau.
OriginalL'auteur liselorev
Je pense que c'est ce que tu voulais dire:
OriginalL'auteur KT8