mysql - 如果 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 相比,这里出生的年份不同,我想按原样显示该列。如果吉尔和他们同年出生,我什么都不想要。
如果满足此条件,我现在如何选择所有行?
解决方案
您需要 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 |