首页 > 解决方案 > 如果 COUNT(DISTINCT COLNAME)>1 则选择所有行

问题描述

如果特定列中的一个值与该列中的任何值不同,我想选择表中的所有行。因此,要检查所有行是否不同,我首先执行count(distinct col_name)>1.

| NAME | YEAR_BORN | SCHOOL |  
| Jack | 2000      | A      |  
|Jill  |2001       |A       |
|Jane  |2000       |A       |

由于 Jill 与 Jack 和 Jane 相比,这里出生的年份不同,我想按原样显示该列。如果吉尔和他们同年出生,我什么都不想要。

如果满足此条件,我现在如何选择所有行?

标签: mysql

解决方案


您需要 where 子句中的子查询:

select * from tablename
where (select count(distinct year_born) from tablename) > 1

演示
结果:

| NAME | YEAR_BORN | SCHOOL |
| ---- | --------- | ------ |
| Jack | 2000      | A      |
| Jill | 2001      | A      |
| Jane | 2000      | A      |

推荐阅读