精华内容
下载资源
问答
  • mysql 两表关联查询 group by having

    千次阅读 2019-03-11 14:43:59
    已有的数据库字段和数据 ...关联表的字段和数据: b表 bid aid deptname 1 1 国土局 2 2 水利局 3 3 经信局 4 1 规划节点一 5 1 规划节点二 6 2 规划节点一 7 2 规划节点二 8...

    已有的数据库字段和数据

    主表字段和数据: a表

    aid name creator
    1 测试一 张三
    2 测试二 李四
    3 测试三 王五

    关联表的字段和数据: b表

    bid aid deptname
    1 1 国土局
    2 2 水利局
    3 3 经信局
    4 1 规划节点一
    5 1 规划节点二
    6 2 规划节点一
    7 2 规划节点二
    8 2 规划节点三

    问题描述

    1.查询主表有哪些数据国土环节已办结,哪些数据在国土环节未办结?

    2.查询主表有哪些数据规划环节已办结(只有当规划节点一二三都完成后才算办结),哪些数据在规划环节未办结?

    sql语句

    sql拆分 一步步来
    1.首先查询关联表

    select aid from b where deptname = '国土局'
    

    在这里插入图片描述

    select aid from b where deptname LIKE '%规划环节%' group by aid HAVING COUNT(0) >=3
    

    模糊查询、根据aid分组、再根据count过滤
    在这里插入图片描述
    2.关联查询
    查询已办结:

    SELECT 
    	 distinct a.aid,
    	 a.name,
    	 a.creator
    FROM 
    	a a ,b b 
    where a.aid  in (select aid from b where deptname = '国土局' )  
    

    查询结果

    aid name creator
    1 测试一 张三
    SELECT 
    	 distinct a.aid,
    	 a.name,
    	 a.creator
    FROM 
    	a a ,b b 
    where a.aid  in 
    (select aid from b where deptname LIKE '%规划环节%' group by aid HAVING COUNT(0) >=3 )  
    

    查询结果

    aid name creator
    2 测试二 李四

    未办结 则是 not in

    展开全文
  • 我想多表关联,算出每个客户在各个的汇总数据,直接用一句SQL怎么实现呢? Select C.... isnull(sum(O.数量*O....isnull(sum(R....isnull(Sum(I....Group by C.客户名 上述代码,没办法通过,提示多个无效....
  • 我想获得如下图sql3的结果集,但是sql1中group by后取到了2017-05-02的filename为null的一条记录,而sql2中的记录缺失了filename为null,但是plan_place不为空的两条记录,解决方法如sql3,先对filename进行排序,将...

    我想获得如下图sql3的结果集,但是sql1中group by后取到了2017-05-02的filename为null的一条记录,而sql2中的记录缺失了filename为null,但是plan_place不为空的两条记录,解决方法如sql3,先对filename进行排序,将filename不为null的放在前面

    sql1


    sql2


    sql3




    展开全文
  • 使用jpa操作多张表进行关联查询时,有重复数据需要分组去重 1)确定主:将有重复数据的表格作为主,表明关系 public class AttendanceRuleTypeItem implements Serializable { @Id @GeneratedValue(strategy = ...

    使用jpa操作多张表进行关联查询时,有重复数据需要分组去重

    1)确定主表:将有重复数据的表格作为主表,表明关系

    public class AttendanceRuleTypeItem implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long itemId;
    private String name;
    private Integer code;
    private String dictionaryCode;
    @OneToMany
    @JoinColumn(name = “typesCode”,referencedColumnName = “code”)
    private List attendanceRules;

    }
    2.副表两张

    public class AttendanceRuleModel {
    @Id
    @GenericGenerator(name = “guid”, strategy = “guid”)
    @GeneratedValue(generator = “guid”)
    private String id;
    //规则类型code
    private Integer ruleCode;
    //请假类型code
    private Integer typesCode;
    //扣罚天数code
    private Integer resultNumberCode;

    private String rankName;
    @OneToOne
    @JoinColumn(name = "resultNumberCode", referencedColumnName = "code", insertable = false, updatable = false,
            foreignKey = @ForeignKey(value =ConstraintMode.NO_CONSTRAINT ))
    private AttendanceRuleTypeItem resultNumber;
    @OneToMany(cascade = {CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.MERGE})
    @JoinColumn(name = "rule_id",referencedColumnName = "id",foreignKey = @ForeignKey(value =ConstraintMode.NO_CONSTRAINT ))
    private List<RelationAttendanceDepartment> departmentRelation;
    
    @OneToMany(cascade = {CascadeType.PERSIST,/*CascadeType.REMOVE,*/CascadeType.REFRESH})
    @JoinColumn(name = "attendance_rule_id",referencedColumnName = "id",foreignKey = @ForeignKey(value =ConstraintMode.NO_CONSTRAINT ))
    private List<RelationAttendanceRank> relationAttendanceRanks;
    

    }
    public class RelationAttendanceDepartment extends BaseEntity {
    @Id
    @GeneratedValue(generator = “guid”)
    @GenericGenerator(strategy = “guid”,name = “guid”)
    private String ruleDeptId;
    @Column(name = “rule_id”)
    private String ruleId;
    private Integer departmentId;

    public RelationAttendanceDepartment(Integer departmentId) {
        this.departmentId = departmentId;
    }
    
    public RelationAttendanceDepartment(String ruleId, Integer departmentId) {
        this.ruleId = ruleId;
        this.departmentId = departmentId;
    }
    

    }
    3)。确定每张表的关系之后 表连接查询

    public PageResultVO<List> ruleList(QueryPageVO attendance) {
    Specification reSpec = (Specification) (root, cq, cb) -> {
    Join<AttendanceRuleTypeItem, AttendanceRuleModel> ruleJoin = root.join(“attendanceRules”, JoinType.LEFT); //表关联查询 AttendanceRuleTypeItem 为主表
    Join<AttendanceRuleModel, RelationAttendanceDepartment> deptJoin = ruleJoin.join(“departmentRelation”, JoinType.LEFT); //两张副表之间的关联关系
    Predicate predicate = cb.conjunction();
    predicate = cb.and(predicate, cb.equal(deptJoin.get(“departmentId”), attendance.getQuery().getId())); //拼接副表中的查询条件
    predicate = cb.and(predicate, cb.equal(root.get(“dictionaryCode”), “1002”)); //拼接朱表中的查询条件
    predicate = cb.and(predicate, cb.equal(ruleJoin.get(“ruleCode”), 2001)); //拼接副表中的查询条件
    cq.where(predicate);
    return cq.getRestriction();
    };
    Page ruleTypeItemPage = ruleTypeItemRepository.findAll(Specification
    .where(reSpec)
    .and(distinct()), PageRequest.of(attendance.getPages().getPage(), attendance.getPages().getSize()));
    List attendanceRuleResultVOS = ruleTypeItemPage.stream().map(r->{
    AttendanceRuleResultVO ruleResultVO =new AttendanceRuleResultVO();
    ruleResultVO.setTypesName(r.getName());
    List ruleVOS = r.getAttendanceRules().stream().map(a-> new RuleVO(a.getId(),getRankName(a),
    a.getResultNumber().getName())).collect(Collectors.toList());
    ruleResultVO.setRule(ruleVOS);
    return ruleResultVO;
    }).collect(Collectors.toList());
    return new PageResultVO(ruleTypeItemPage.getTotalPages(),(int)ruleTypeItemPage.getTotalElements(),null, attendanceRuleResultVOS);
    }

    //去重

    public Specification distinct() {
    return (Root root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) -> {
    criteriaQuery.distinct(true);
    return criteriaQuery.getRestriction();
    };
    }

    展开全文
  • **解决**由于进度问题, 用exists解决失败, 最后解决如下如果想找最新的数据,则需要使用group by和max。找出最新数据的id, 采用低效的 in 对查询的最新数据的id进行再次查询筛选.参见 ...

    **解决**

    由于进度问题, 用exists解决失败, 最后解决如下

    如果想找最新的数据,则需要使用group by和max。找出最新数据的id, 采用低效的 in 对查询的最新数据的id进行再次查询筛选.

    参见 https://blog.csdn.net/john_hongming/article/details/42742965

    **注意核心要点:**

    yii2 多表关联查询单字段去重没有生效

    原因是

    单表的唯一查询用:distinct

    多表的唯一查询用:group by --但是注意下面的坑

    参考: https://blog.csdn.net/lkforce/article/details/52598155

    GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。

    写的顺序:select ... from... where....group by... having... order by..

    执行顺序:from... where...group by...having.... select ... order by...

    所以在order by拿到的结果里已经是分组的完的最后结果。

    由from到where的结果如下的内容。

    到group by时就得到了根据category_id分出来的多个小组

    到了select的时候,只从上面的每个组里取第一条信息

    **(特别注意:)**即使order by也只是从上面的结果里进行排序。并不是每个分类的最新信息。

    另一个博客查询正确, 不过是单表查询, 我没有去验证对应的其他字段是否正确

    参见 https://blog.csdn.net/zhangqun23/article/details/52904707

    我想列出每个部门最高薪水的结果,sql语句如下:

    SELECT DEPT, MAX(SALARY) AS MAXIMUM

    FROM STAFF

    GROUP BY DEPT

    展开全文
  • 在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中。(select中的字段不可以单独出现,必须出现在group语句中或者在组函数中。) 让我一愣的...
  • 用户:users 日志:logs(外键:user_id,创建时间:created_at) 获取所有用户最新的日志... (SELECT user_id,max(created_at) as maxtime from logs GROUP BY user_id) as a LEFT JOIN logs as b ON b.creat...
  • 1、正常的MySQL关联表求和方式: SELECT biz.id AS id, sum( item.weight ) AS prog FROM oa_crm_biz biz LEFT JOIN oa_crm_biz_item item ON biz.id = item.biz_id WHERE item.item_status = 1 GROUP BY ...
  • 使用jpa操作多张表进行关联查询时,有重复数据需要分组去重1)确定主:将有重复数据的表格作为主,表明关系public class AttendanceRuleTypeItem implements Serializable {@Id@GeneratedValue(strategy = ...
  • 思路:以条件筛选出t2中数据,以少量数据作为驱动,查询t1表关联数据,之后基于t1的结果集进行group by操作。 完美解决!   最后优化索引: 1、 group by 后的字段一定是要添加索引的,否则还是 ...
  • .groupBy('post.topic_id') .addGroupBy('topic.id') .where('post.topic_id is not null') .orderBy('sum', 'DESC') .limit(5) .getRawMany(); console.log(post); return post; } createQueryBuilder...
  •  //linq实现两表关联查询,使用group by进行分组,groupby之间放你后面要select的对象(如果只有一个字段,可以直接写,如果有多个可以像我一样使用匿名对象)  //select的时候也使用匿名对象的方式,并可以...
  • 使用group by 需要查询的字段 必须要放在group by 后面 SELECT U.UserLotterySn,count(W.Userlotterysn) as WinCount,U.ActivityCode,CertType,CertNumber,LotterySumCount,LotteryCounted,IsBigWin,U.CreateBy,U....
  • 上节课遗漏 : ...PRIMARY KEY (PK) 标识该字段为该的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUT...
  • 问题SQL:selectp.person_id as personId,p.person_name as personName,p.native_place as nativePlace,ci.company_name as companyName,pp.seal_number as sealNumber,GROUP_CONCAT(pp.major) as major,pp.register...
  • 假设有两个。文章和评论。如下: [code="sql"] article ( id int not null, title varchar not null, content varchar, primary key(id) ); comment ( id int not null, article_id ...
  • detail.orderid JOIN customers ON customers.serial=orders.customerid JOIN products ON products.productid=order_detail.productid WHERE customers.email='abc@yahoo.com' GROUP BY orders.date ORDER BY ...
  • 由于进度问题, 用exists解决失败, 最后解决如下如果想找最新的数据,则需要使用group by和max。找出最新数据的id, 采用低效的 in 对查询的最新数据的id进行再次查询筛选.参见 ...
  • 关联和动态group by

    2014-04-10 21:05:32
    网上看到一个开发面试题,我也拿来研究了一下。 nba记录了nba(team VARCHAR2(10),y NUMBER(4))夺冠球队的名称及年份 TEAM Y ----------...
  • 1:hosts(主键:hostID) 2:groups(主键groupID) 中间groupmembers ...GROUP BY(gmGroupID) 关联查询 SELECT groupName,`hosts` FROM groups as a LEFT JOIN ( SELECT gmGroupID,GROUP
  • RealTimeDatas的字段RecordTime存储了实时时间,格式为...同时,另一个Devices中有标准温度湿度最大最小值范围,需要将这个结果一并关联到查询结果中  var query = from r in context.RealTimeDatas.AsEnumerabl

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 769
精华内容 307
关键字:

关联表groupby