Valeurs distinctes dans plusieurs colonnes
J'essaie d'obtenir des valeurs distinctes pour plusieurs colonnes dans le tableau.
par exemple, si mon tableau a COL1,COL2,COL3 que les colonnes et je suis en cours d'exécution d'une requête comme
SELECT DISTINCT COL1, COL2, COL3 FROM TABLEx
mais ce qui arrive est, selon les données de l'une des colonnes, j'obtiens des valeurs en double dans les deux autres colonnes. Si COL1 a 40 valeurs uniques et COL2 a seulement 10 valeurs uniques et COL3 a 5 valeurs uniques. Je suis plus de 40 lignes de données où COL1 est unique et COL2/COL3 a des valeurs en double. Comment puis-je obtenir des valeurs DISTINCTES pour chaque colonne et de remplacer les doublons par les valeurs null. Je fais cela uniquement pour obtenir des valeurs distinctes pour mes listes déroulantes dans une page web. Je peux toujours effectuer une requête séparée pour chaque domaine, mais je pense qu'il n'est pas très efficace. Toute aide que j'comment je m'approche de cela?
OriginalL'auteur oortcloud_domicile | 2012-08-13
Vous devez vous connecter pour publier un commentaire.
Oui! Faire cela!
C'est probablement très bien. Vous pouvez améliorer les performances par l'ajout d'un index séparé pour chaque colonne. Si vous êtes toujours inquiet qu'il sera lente, mesurer pour être sûr. Si il s'avère que c'est vraiment un problème, alors vous pouvez envisager d'utiliser la mise en cache.
OriginalL'auteur Mark Byers
Pas tout à fait sûr que c'est ce que vous cherchez, et il ne serait jamais si légèrement plus efficace que les requêtes distinctes:
REMARQUE: Ce n'est certainement pas le corriger la façon d'écrire des requêtes sql, mais fournit une solution possible à la question.
OriginalL'auteur sybkar
Si votre version de Sybase arrive à inclure row_nubmer(), vous pouvez le faire avec l'union de tous:
Ce qui ajoute un numéro de séquence à chaque valeur, puis les combine en utilisant le groupe de par.
J'imagine que certaines bases de données basées sur Sybase -- Sybase IQ et SQL Anywhere. Je pourrais dire que cela dépend de la version utilisée.
Je ne dirais pas ", selon la version utilisée" -- Sybase ASE est un produit complètement différent à Sybase IQ et SQLAnywhere.
OriginalL'auteur Gordon Linoff
J'ai utilisé une seule requête, mais endedup l'aide d'un Ensemble de stocker des valeurs uniques seulement une fois que je reçois le jeu de résultats. De cette façon, je ne suis pas le chargement de la base de données avec plus d'une requête.
OriginalL'auteur oortcloud_domicile
pouvez également utiliser
il a travaillé pour moi.
OriginalL'auteur riehime23