表A(id,name,regedate)
表B(id,groupid)
表C(id,name)
求:
1 求出A表中每个月的注册用户,regedate格式是yyyy/mm/dd
2 求出A表中所有姓名相同的用户
3 A 表中有相同名字的用户,把相同的选出来放入C表中
4 A 表中姓名相同的id,保留注册最大时间的用户写出sql,谢谢2 我只写出了第二个看对不对,同时其它的怎么写。select  name from A where name in  (select name from A where count(name)>1);同时有人把第二个这么写看对不
select * from A where name in  (selecct name from A group by name having count(*)>1 
,他这么写对吗,group by ,不是反回单个吗,name同名的会有多个,也可以吗,,count(*)我就更不明白了

解决方案 »

  1.   

    自己先好好看看sql,想一下,试着写一下,一般没人会回答这类问题的
    这些sql不是超难
      

  2.   

    1. select regedate as 月份,count(1) as 注册量 from 表A group by regedate
    2. select name from 表A group by name having count(name) > 1
    3. insert into 表C select id,name from 表A where name in 
       (select name from 表A group by name having count(name) > 1)
    4. delete from 表A as aa where exists
      (select 1 from 表A as bb where bb.name = aa.name and  bb.regedate > aa.regedate )--尾注,不是装,这些 sql 语句确实是很基础的,lz请多点实践
      

  3.   

    这样求不行,
    至少得冰天雪地赤身裸体跪玻璃渣求
    不过这些sql是基本的了
    找找资料相当容易的
      

  4.   

    1.什么数据库?所以时间类型转换不确定用什么转换
    2.也可以这样写 select a.* from 表A a join 表A a1 on a.id <>a1.id and a.name=b.name
      

  5.   


    SELECT TO_CHAR(REGEDATE,'mm'),COUNT(1) FROM D301 GROUP BY TO_CHAR(REGEDATE,'mm') ORDER BY TO_CHAR(REGEDATE,'mm') 
    SELECT NAME FROM A GROUP BY NAME HAVING COUNT(1) > 1
    INSERT INTO SELECT NAME FROM A GROUP BY NAME HAVING COUNT(1) > 1
    DELETE FROM A WHERE REGEDATE NOT IN MAX(regedate) FROM A GROUP BY NAME HAVING COUNT(1) > 1
      

  6.   

    这个不是很难的啊,你说你写出来二个,不知道是哪二个,我看第三个和第四个比较难,我就给你写第三个和第四个吧
    表A(id,name,regedate)
    表B(id,groupid)
    表C(id,name)
    求:
    3 A 表中有相同名字的用户,把相同的选出来放入C表中
    4 A 表中姓名相同的id,保留注册最大时间的用户3 insert into c ( select id,name  from  A  where id not in ( select distinct id  from A )  ) 
     
    4 select distinct id from A where max(regedate) 这个应该是人想要的结果。第三个有点绕,给你说一下, select distinct id  from A  这个是查询是没有重复的。把有重复的过滤掉了。
    之后在用not in 是查询我们过滤掉的的那些是重复。这么用的原因是:
    select distinct id  from A   这个里面包括了一些没有重复的数据,如果直接用他,把有一条用户的也会删除掉,所以给你过滤一下