表AA如下:
代码 名称
101 AAAAAAAAAAAAA
101 BBBBBBBBBBB
102 CCCC
102 CCCC
103 AWC
103 #$EDDDD现在要实现,代码相同的,只取一条,可以取任意一条,把其他的记录删除掉,SQL语句该怎么写?得到结果要是下面这样:
101 AAAAAAAAAAA
102 CCCC
103 AWC
或:
101 BBBBBBBB
102 CCCC
103 #$EDDDDD
代码 名称
101 AAAAAAAAAAAAA
101 BBBBBBBBBBB
102 CCCC
102 CCCC
103 AWC
103 #$EDDDD现在要实现,代码相同的,只取一条,可以取任意一条,把其他的记录删除掉,SQL语句该怎么写?得到结果要是下面这样:
101 AAAAAAAAAAA
102 CCCC
103 AWC
或:
101 BBBBBBBB
102 CCCC
103 #$EDDDDD
sql="select * from tb order by daima"
然后循环删除偶数项
不过我估计不是你要的
我前一段时间刚做了一个。就是recordset取出后循环
where 名称 in (select min(名称) from tb group by 代码)
delete from tb
where 名称 not in (select max(名称) from tb group by 代码)
where 名称 in (select min(名称) from tb group by 代码)
delete * from aa in(select distint ('代码','名称') from aa) 不知道有没有语法错误哦!^_^
(
code int,
name varchar(50)
)
insert into csdn (code, name)values
(101,'AAAAAAAAAAAAAAA')
insert into csdn (code, name)values
(101,'BBBBBBBBBB')
insert into csdn (code, name)values
(102,'CCCC')
insert into csdn (code, name)values
(102,'CCCC')
insert into csdn (code, name)values
(103,'AWC')
insert into csdn (code, name)values
(103,'#$EDDDD ')select distinct * from csdnselect distinct *
from csdn
where name in
(
select max(name)
from csdn
group by code
)
SELECT id, MAX(名称) AS 名称 into 新表
FROM 测试
GROUP BY id新表里面的记录已经进行了你要的操作,其中MAX也可用MIN。
不知道这样的结果你满意不?
SELECT id,MAX(名称) AS 名称 into 新表
FROM 测试
GROUP BY id
新表里面的记录已经进行了你要的操作,其中MAX也可用MIN。这样的语句适合任何情况,不管是记录内容完全一样还是不一样,不管相同id的记录有多少条,新生成的表中都能够将这些信息滤掉。
不知道这样的结果你满意不?
记得oracle里有一个rwid什么什么的,就是每条记录的标识,拿他做参考,MAX或者MIN。
插入数据(code唯一)
select code,MAX(name) into 临时表名 FROM 表名 group by code删除原来表所有数据
delete 表名 where 1=1把临时表所有数据插入原来表insert into 表名(select code,name) from 临时表名
(select 代码,min(名称)As 名称 from tb group by 代码) t1
where tb.代码=t1.代码 and tb.名称 = t1.名称
+------+---------+
| code | name |
+------+---------+
| 101 | aaaaaaa |
| 102 | 555 |
| 103 | lllllll |
+------+---------+效果已达到!!呵呵