选择columnA具有多个唯一columnB值的行

时间:2015-09-18 13:57:31

标签: mysql

如何检索colA具有多个唯一colB值的行?

例如:

+------+------+
| colA | colB |
+------+------+
|  1   |  A   |
|  1   |  B   |
|  2   |  C   |
|  3   |  D   |
|  3   |  D   |
+------+------+

鉴于上述数据,我只想检索colA = 1的记录,因为这是colB中唯一具有多个唯一值的列。

我无法理解它。我有一种感觉,我错过了一些非常明显的东西。

这可能吗?

2 个答案:

答案 0 :(得分:2)

您可以将exists用作

select * from table_name t1
where exists(
  select 1 from table_name t2
  where t1.colA = t2.colA
  and t1.colB <> t2.colB
)

如果您刚刚找到colA,那么您可以使用

select colA from table_name
group by colA
having count(distinct colB) > 1 

答案 1 :(得分:0)

您可以使用COUNT(DISTINCT ..)为每列的不同列b值计算一个值,然后使用HAVING子句来获取所需内容:

SELECT colA
FROM myTable
GROUP BY colA
HAVING COUNT(DISTINCT colB) > 1;

以下是SQL Fiddle示例。