如何根据列值(0,1)从表中检索行

时间:2013-11-27 13:06:02

标签: sql oracle

我有多行的表,它将按以下方式包含数据

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

我需要编写一个查询来获取行(103-1)。表示查询应该返回没有相应记录对的行(xxx-1,xxx-0)。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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

的示例

答案 2 :(得分: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),可以在查询中使用IN