求去除多列重复值的sql语句 数据库为mysql表名:test_t 字段:r1,r2,r3数据如下: r1 r2 r3 1 2 3 1 2 4 1 3 4查询的结果要这样: r1 r2 r3 1 2 4 1 3 4比较r1,r2,如果值都一样,则保留第一条,其它的全部显示 各位大哥帮帮忙,小弟先谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 假如r1,r2,如果值都一样,则保留r3最大值的那一条:select a.* from test_t a where not exists (select 1 from test_t b where b.r1=a.r1 and b.r2=a.r2 and b.r3>a.r3); 或:select a.* from test_t a,(select r1,r2,max(r3) as max_r3 from test_t group by r1,r2) b where a.r1=b.r1 and a.r2=b.r2 and a.r3=b.max_r3; 假如r1、r2的值都一样,则随便保留一条,则要求你的表数据里面有一个可以在r1、r2相同的情况下进行唯一区分的列,如自增列等。上面的示例语句就是取r3最大值的那条(前提r1、r2相同时,r3不会出现重复值,否则不准)。 楼主的需求能用一条sql语句满足吗?就是delete from tb where 不用procedure 大数据量时,如何提高mysql转换存储引擎的效率? 关于mysql cluster中NDB表的问题 判断数据库中是否存在该数据,如果存在则不插入 mysql 根据英文首字母来查询汉字函数 虚拟主机上,一台机器可以有几百个mysql数据库,是每个数据库都启动单独的服务,还是只启动一个服务呀? PostgreSQL建立表分区的问题? 查询表中某个字段规定长度 C#下使用postgresql存储过程.本人没分了,但是很急 SELECT 中如何转换字段为大写呢? 怎样让mysql支持特殊字符? A表记录的多个字段和B表的多记录如何实现关联 这是存储过程要怎么接受呢
select 1 from test_t b where b.r1=a.r1 and b.r2=a.r2 and b.r3>a.r3);
select a.* from test_t a,(select r1,r2,max(r3) as max_r3 from test_t group by r1,r2) b where a.r1=b.r1 and a.r2=b.r2 and a.r3=b.max_r3;
上面的示例语句就是取r3最大值的那条(前提r1、r2相同时,r3不会出现重复值,否则不准)。
不用procedure