2009-10-12 10 views
0

Obtention de lignes/valeurs uniques dans SQL. J'ai même certaines données comme celui-ciObtention de lignes/valeurs uniques dans SQL

valueA ValueB ValueC 

test "Value1" "Something" 

test "Value1" "Something else" 

test2 "Value1" "Something else" 

Alors je veux obtenir les deux premières lignes depuis valeurC est différent et je veux aussi ramer 3.

mais dire la ligne 4 est

test "Value1" "Something" 

La même chose que la ligne 1. Je ne veux pas cette ligne. Est-ce que je peux le faire avec une instruction select ou où ou quelque chose d'autre?

Dans mon schéma, ValueA se trouve dans une table, puis les valeurs b et C proviennent d'une table différente. alors je fais quelque chose comme

select * from table1,table2 

qui me donne les 3 valeurs.

Mais je ne veux pas les valeurs répétées.

Répondre

3
SELECT DISTINCT * FROM Table1, Table2 

fera ce que vous voulez. Cependant, votre instruction SELECT n'inclut pas de critère indiquant au système comment joindre les lignes ensemble. Vous obtiendrez donc un produit cartésien, contenant un nombre de lignes égal au nombre de lignes dans Table1 fois le nombre de lignes dans Table2. C'est généralement pas ce que vous voulez (parfois c'est).

Donc, vous voulez probablement quelque chose comme:

SELECT DISTINCT * FROM Table1, Table2 WHERE Table1.SomeColumn = Table2.SomeColumn 

ou, dans un plus dialecte actuel de SQL:

SELECT DISTINCT * FROM Table1 INNER JOIN Table2 ON Table1.SomeColumn = Table2.SomeColumn 
+0

C'est probablement la meilleure réponse. Je pense que j'avais d'autres points de données que je n'avais pas dans ma question. Mais ceci est une excellente réponse basée sur ma question telle qu'écrite. – Maestro1024

1

Utilisez SELECT DISTINCT?

Comme dans:

SELECT DISTINCT value1, value2, value3 FROM table1, table2 
+0

Je regardais distincte, comme "Select Distinct valeurC de Tableau2" mais alors si vous regardez mon exemple qui laisserait dehors la rangée 3 où le ValueC est le même mais la valeur A n'est pas. – Maestro1024

+0

Ah, mais vous devez placer toutes les colonnes que vous voulez être distinctes dans la clause SELECT - donc, pas SELECT DISTINCT ValueC, mais SELECT DISTINCT ValueA, ValueB, ValueC. –

1

Sélectionnez Distinct * de table1, table2

0

Comment cela?

SELECT DISTINCT * FROM Table1, Table2 
1

Vous pouvez jeter un oeil à la référence SQL pour:

  • unique
  • Distinct
  • Groupe par
1
SELECT DISTINCT * 
FROM table1, table2 
0

Essayez ceci:

select a.valueA, b.valueB, b.valueC 
from table1 a join table2 b on <join condition> 
group by a.valueA, b.valueB, b.valueC; 
Questions connexes