select * from emp where exists (select * from emp e where e.name = emp.name and e.emp_no <> emp.emp_no);
此思路的join写法:
select emp.* from emp,emp e where emp.name = e.name and emp.emp_no <> e.emp_no; /* 这个语句较规范的 join 写法是 select emp.* from emp inner join emp e on emp.name = e.name and emp.emp_no <> e.emp_no; 但个人比较倾向于前一种写法,关键是更清晰 */
b、有例表:emp name age Tom 16 Sun 14 Tom 16 Tom 16
----------------------------------------------------清除重复---------------------------------------------------- 过滤掉所有多余的重复记录 (1)我们知道distinct、group by 可以过滤重复,于是就有最直观的
select distinct * from emp 或 select name,age from emp group by name,age;
获得需要的数据,如果可以使用临时表就有解法:
select distinct * into #tmp from emp; delete from emp; insert into emp select * from #tmp;