2013-11-27 2 views
0

У меня есть таблица с несколькими строками, которые будут содержать данные следующим образомКак извлечь строки из таблицы на основе значения столбца (0,1)

col1 col2 
100 - 1 
100 - 0 
102 - 1 
102 - 0 
103 - 1 

мне нужно написать запрос, чтобы выбрать строку (103-1). Означает, что запрос должен возвращать строки, у которых нет соответствующей пары записей (xxx-1, xxx-0).

+1

У вас есть только два возможных значения для столбца 'col2'? то есть 0 и 1 –

+0

Я не понимаю вопрос. Вы всегда хотите, чтобы строка содержала в ней 103 или вы хотите максимальное значение для col1 или что определяет, какую строку вам нужно извлечь? – Armunin

ответ

2
select col1, max(col2) as col2 
from your_table 
group by col1 
having count(distinct col2) = 1 
+0

Этот sql не возвращает всю строку. –

+0

Теперь он возвращает оба –

+0

Это решение помогло мне решить мое требование. Спасибо Alen, а также другим за их ответы. – Ramarao

0

Попробуйте это:

select * 
from your_table a 
where not exists (select 1 
        from your_table b 
        where b.col1 = a.col1 
        and b.col2 != a.col2) 

Вот пример sql fiddle

0

, если у вас есть только два возможных значения для столбца col2, как 1 и 0, то вы можете использовать следующий запрос для выполнения предписаний выше вопроса -

SELECT * 
    FROM table_name 
WHERE col1 IN (SELECT col1 FROM your_table 
       GROUP BY col1 HAVING COUNT(DISTINCT col2) = 1) 

как вы хотите, чтобы полные столбцы (col1 и col2) в вашем выходе y ou может использовать IN в вашем запросе.

+1

Должно быть 'WHERE col1 IN' – OGHaza

+0

спасибо @OGHaza .. Я обновил запрос с той же точки .. –

Смежные вопросы