一对多查询提取不重复值

一对多查询提取不重复值

问:SQL 在一对多的表格中执行多表查询,我不想内容重复,凡是一对多的我都取第一个值,我该怎么写。
  1. 答:select a.id , ---或者其他个人信息
    count(d.xx_id),--应有考勤数量
    sum(nvl(d.countid,0)) --实际考勤数量
    from a , (select b.xx_id,count(c.id) countid from b,c where b.id = c.kj_id(+) group by b.xx_id ) d
    where a.id = xx_id(+)
    group by a.id
    以上为oracle写法(+)表示外关联。
问:excel一对多查询,显示为一行但不显示重复值
  1. 答:使用删除重复值功能来处理。拖动选中这一列相同的数据按合并及居中按钮出现对话框:选定区域包含多重数据,合并到一个单元格后会只显示左上角的数据。按确定。
问:sql 怎么取不重复的数据的所有数据
  1. 答:SQL数据重复分几种情况,一种是原数据重复,第二种是粒度重复,第三种是分布重复。
    原数据重复的情况,你直接可以distinct掉,例如,学生表当中有两个重复的学号,你想取出不重复的,直接可以写:select
    distinct
    学号
    from
    学生表
    第二种是查询粒度重复,比如你有一张表是存储区域的,分别为省、市、县三列。而你需要的是只查找不同的省市,则也可以使用distinct:select
    distinct
    省,市
    from
    区域
    第三种则是分布重复,比如在join
    的时候,左右两个表格存在一对多的关系,造成的重复,或者在聚合之后出现了维度重复,则这种相对来说比较麻烦,你需要在子查询中统计或查找出唯一值,然后再去关联,或者是按照一定的数据需求的取数规则,在查询结果后再进行聚合,取到唯一值。
    不过不管怎么样,都是要看实际需求是什么样子的。大多可以用子查询和关联联合解决。
  2. 答:表table1(a,
    b),a列是主键,b是你说的关键字段。
    假设你要插入一条新记录(a1,
    b1):
    /*
    判断数据库中是否有b=b1的记录
    */
    //
    此sql语句取出数据库中所有b=b1的记录
    string
    sql
    =
    "select
    *
    from
    table1
    where
    b=b1";
    mand
    cmd
    =
    new
    mand(cmd,
    sqlconnection);
    //
    运行sql语句,并获得结果集
    resultset
    rs
    =
    cmd.exec();
    if
    (rs.next())
    {
    //
    rs存在记录,不要插入
    }
    else
    {
    //
    rs不存在记录,即数据库中没有b=b1的项,可以插入。
    }
    不记得c#的类名了,以上代码希望能达意
一对多查询提取不重复值
下载Doc文档

猜你喜欢