2011-07-20 2 views
-2

J'ai une table qui stocke les alarmes. ma requête est que je dois afficher toutes les alarmes qui sont dans la table mais les alarmes qui sont répétées ne devraient être affichées qu'une seule fois. par exempleComment afficher uniquement des instances uniques de mes objets?

table1 
------- 
alarms 
------ 
A 
A 
A 
A 
B 
B 
B 
C 
D 
E 
------ 

dans le tableau ci-dessus dire A, B, C, D, E sont alarms.the alarmes qui se répètent doivent être affichés qu'une seule fois par exemple alarme A est répété quatre fois, mais il doit être affiché seule once.The sortie désirée est

A 
B 
C 
D 
E 
+0

dans une base de données * table? sinon: quelle structure de données utilisez-vous? –

+0

On dirait que vous voulez regrouper votre source de données. Aucune idée de ce que cette source de données peut être. – Marko

+0

Certaines choses doivent être clarifiées: 1) Quel genre de table? 2) Le filtrage est-il suffisant pour qu'un seul élément soit suffisant? 3) Les chaînes 'alarmes' sont-elles des objets? – futureelite7

Répondre

0

Je ne sais pas vraiment ce que vous entendez par la table dans ce cas, mais la structure de données que vous recherchez est un ensemble. Si vous ajoutez 'A' à un Set qui contient déjà 'A', rien ne se passe.

0
select distinct alarms from table1 
0

Cela ne devrait-il pas être étiqueté comme SQL plutôt que comme Java?

Quoi qu'il en soit, vous pouvez chercher les résultats de la table en ajoutant distincte dans votre déclaration:

select distinct alarms from table1; 
0

Vous pourriez soit le faire en utilisant le mot-clé distinct dans votre requête SQL ou de mettre les résultats dans un LinkedHashSet en Java , afin d'éliminer les doublons et de préserver l'ordre d'insertion.

2

Vous obtiendrez les alarmes distinctes

SELECT alarmes Distinct de yourtablename

0

Évitez d'utiliser distincts si la table devrait croître à une plus grande taille, il a des performances horribles dans la plupart des SGBD (utilisation faible index presque toujours par défaut à balayage de table complet). Grouper par est meilleur, dans ce cas:

select * from table where column in (select column from table group by column) 

Qui peut correctement optimiser la colonne d'exécution fournie est indexée.

Questions connexes