sql查询以查找非映射列值

时间:2009-02-20 14:19:05

标签: sql plsql

难以用语言表达,所以假设这个示例表:

| id | col1 | col2 | 
--------------------
| 1  |  aa  |  12  |
| 2  |  aa  |  12  |
| 3  |  bb  |  13  |
| 4  |  cc  |  13  |

我想要一个选择第3行和第3行的查询4或甚至只是值13

这就像检查这个假设:“col2的所有值都相同,应该映射col1的一个值”

我一直在检查,在单独的查询和比较中对每一列进行“分组依据”和行计数,但是能够挑出有问题的行会很好

查询或pl / sql程序没问题

2 个答案:

答案 0 :(得分:5)

获得“13”:

select col2
from mytable
group by col2 having count(distinct col1) > 1;

获取行:

select * from mytable where col2 in
( select col2
  from mytable
  group by col2 having count(distinct col1) > 1
);

答案 1 :(得分:1)

如果你想要的是基于唯一col1的col2,那就是:

SELECT col2 FROM [table] GROUP BY col1 HAVING count(id) = 1;

如果您希望col2基于唯一的col1和col2值,则以下内容应该有效:

SELECT col2 FROM [table] GROUP BY col1, col2 HAVING count(id) = 1;