2010-04-07 3 views
1

Пожалуйста, предложите мне запрос, который извлекает только те записи, которые имеют одну строку в таблице. Например:получение записи, которая имеет только одно значение

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

Если я бегу «выбрать отличный возраст от table1 результат будет:.

 
age 
20 
10 
30 

Но мне нужен запрос, которые дают результат, как

 
name age 
bbb 10 
ddd 30 

I Я использую DB2 как базу данных. Спасибо ....

ответ

1

Чтобы получить уникальные возрасты:

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

также получить столбец имя, в MySQL вы бы просто добавить столбец:

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

Этот трюк не будет работать в большинстве других баз данных, хотя, и я предполагаю, что он выиграл Работаем в DB2. Вместо этого вы можете использовать агрегатную функцию как MIN или внутренний выберите с EXISTS, IN или JOIN:

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

или:

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 
Смежные вопросы