一个sql语句的写法求教

来源:百度知道 编辑:UC知道 时间:2024/05/13 05:08:06
一个表test,简单结构如下,请认真观察name列和code列,id列自增
name code id
高粱酒 1111 46
高粱酒 1111 47
小米酒 2222 48
小米酒 2233 50
大麦酒 3333 51
大麦酒 3333 52
大麦酒 3344 53
现在的问题是,sql语句如何编写才能达到下列目标:
1、选出name相同,但code不同的列,即目标表为:
name code id
高粱酒 1111 46
小米酒 2222 48
小米酒 2233 50
大麦酒 3333 51
大麦酒 3344 53
2、对于name列和id列相同,只保留其中一个记录,即对表进行删除,达到上述目标表的语句。

请注意,这两个语句虽然目标相同,但一个是select语句,一个是对表的delete语句,请务必帮忙分别写出2种方式,谢谢

--问题一:
select name,code,min(id) id from test group by name,code

--问题二:
delete from test where id not in
(select min(id) from test group by name,code)

select语句:
select * from table where id in ( select min(id) from Table group by name,code)
delete语句:
delete from table where id not in
( select max(id) from Table group by name,code)

select name,code,max(id) as id from test group by name,code

delete from test where id not in(select id from (select name,code,max(id) as id from test group by name,code) x)

1.select distinct code,name,id from test

2.delete from test where id not in
(select id from (select distinct name,id from test))