2010-04-07 6 views
1

Veuillez me suggérer une requête, qui récupère uniquement les enregistrements qui ont une seule ligne dans le tableau. Par exemple:Récupérer l'enregistrement qui n'a qu'une seule valeur

 
**table1.** 
name age 
aaa 20 
bbb 10 
ccc 20 
ddd 30 

Si je cours « , sélectionnez l'âge distinct du tableau 1 résultat sera:.

 
age 
20 
10 
30 

Mais je besoin d'une requête, ce qui donne le résultat comme

 
name age 
bbb 10 
ddd 30 

I utilise DB2 comme base de données Merci ....

Répondre

1

Pour obtenir seulement les âges uniques:

SELECT age 
FROM table1 
GROUP BY age 
HAVING COUNT(*) = 1 

Pour obtenir également la colonne de nom, MySQL vous suffit d'ajouter la colonne:

SELECT name, age 
FROM table1 
GROUP BY age 
HAVING COUNT(*) = 1 

Cette astuce ne fonctionnera pas dans la plupart des autres bases de données bien, et je devine qu'il a gagné ne fonctionne pas dans DB2. Au lieu de cela, vous pouvez utiliser une fonction d'agrégation comme MIN ou une sélection intérieure avec un EXISTE, ou devenez membre:

SELECT MIN(name), age 
FROM table1 
GROUP BY age 
HAVING COUNT(age) = 1 

ou:

SELECT name, age 
FROM table1 
WHERE age IN (
    SELECT age 
    FROM table1 
    GROUP BY age 
    HAVING COUNT(age) = 1 
) 
0
SELECT name, age 
FROM table1 
GROUP BY age 
HAVING COUNT(age)=1 
Questions connexes