• sql关于对一个字段同时满足多条件判断来筛选查询


    表所有数据

    查询userName为abc或xyz的


    以下为本菜鸟项目中遇到的问题:

    背景:

    /**
     * wangjie 180629
     * 
     * 学生需要查询四种可能的消息
     * 1.班级管理员发来的,根据自身的学籍号条件查询
    * 2.省级管理员发送区县全部的,根据接收对象地区号作为条件查询
     * 3.省级管理员发送全省全部的,根据接收对象类型为"all"查询
     * 4.省级管理员发送全市全部的,根据接收对象市id查询
     * 
     * */

    例子

    问个sql语句问题,比如如何查出

    name为小红的

    或者

    name为小黑并且sex为男的

    以上两个条件拼接一条语句写出来 

    	/**
    	 * 接收到的学习纪实--分页
    	 * @param pageNumber
    	 * @param pageSize
    	 * @param map
    	 * @return
    	 */
    	@Override
    	public Pagenate<StudyRecordTableEntity> pageforAcceptStudyTableEntity(
    			int pageNumber, int pageSize, Map<String, String> map) {
    		
    		
    //		map传过来的值:{classCode=5051, acceptcode=15040602011, titles2=, role=03, pointId=0482, cityCode=3704, classAdminCode=null, ydrq12=, ydrq22=}
    		// TODO Auto-generated method stub
    		String titles2=map.get("titles2");		//标题
    		String ydrq12=map.get("ydrq12");		//开始日期
    		String ydrq22=map.get("ydrq22");		//结束日期
    		String acceptcode=map.get("acceptcode");//接收人编号
    		
    		/**
    		 * wangjie 180629
    		 * 
    		 * 学生需要查询四种可能的消息
    		 * 1.班级管理员发来的,根据自身的学籍号条件查询
    		 * 2.省级管理员发送区县全部的,根据接收对象地区号作为条件查询
    		 * 3.省级管理员发送全省全部的,根据接收对象类型为"all"查询
    		 * 4.省级管理员发送全市全部的,根据接收对象市id查询
    		 * 
    		 * */
    //		接收区县---区县id
    		String point_id = map.get("pointId");
    //		接收市id
    		String city_id = map.get("cityCode");
    		Session session = super.getHibernateTemplate().getSessionFactory().getCurrentSession();
    		StringBuffer sb=new StringBuffer();
    		
    		// 学员接收信息
    		sb.append(" from StudyRecordTableEntity srt,StudyRecAcceptRoleEntity accept,SysAccCount account where srt.id=accept.sturec_code and account.accCode=srt.sendopt ");
    		sb.append(" and accept.accrole='03' and srt.flag='1' ");
    		sb.append(" and (  accept.send_type='single' and ( accept.accept_range like '%"+acceptcode+"%' or accept.accept_range like '%"+point_id+"c%' or accept.accept_range like '%"+city_id+"%' ) ");
    		sb.append(" or accept.send_type='all' ) ");
    		
    		if(titles2!=null&&!"".equals(titles2)){
    			sb.append(" and srt.titles like '%"+titles2+"%' ");
    		}
    		if(ydrq12!=null&&!"".equals(ydrq12)){
    			sb.append(" and srt.sdate >= '"+ydrq12+"' ");
    		}
    		if(ydrq22!=null&&!"".equals(ydrq22)){
    			Calendar calendar=new GregorianCalendar();
    			calendar.setTime(DateUtils.parseDate(ydrq22, "yyyy-MM-dd"));
    			calendar.add(calendar.DATE, 1);
    			sb.append(" and srt.sdate < '"+DateUtils.formateDate(calendar.getTime(), "yyyy-MM-dd")+"' ");
    		}
    		String hqlCnt="select count(0) "+sb.toString();
    		String hql="select srt "+sb.toString()+" order by srt.sdate desc,srt.sturec_type asc ";
    		System.out.println("拼接的sql---->"+hql);
    		Query queryCnt=session.createQuery(hqlCnt);
    		Query query=session.createQuery(hql);
    		return super.findByPage(pageNumber, pageSize, queryCnt, query);
    	}

    后台是hql语句查询的,刚开始没想起来,急的我差点写四个sql分别查询

    一个同胞的:

  • 相关阅读:
    10.2 查找同一组或分区中行之间的差
    8.7 确定当前记录和下一条记录之间相差的天数
    8.6 计算一年中周内各日期的次数
    8.5 确定两个日期之间的秒、分、小时数
    8.4 确定两个日期之间的月份数或年数
    8.2 计算两个日期之间的天数
    8.3 确定两个日期之间的工作日数目
    8.1 加减日、月、年
    7.13 计算不包含最大值和最小值的均值
    第3章 Python的数据类型 第3.1节 功能强大的 Python序列概述
  • 原文地址:https://www.cnblogs.com/wjup/p/10576104.html
Copyright © 2020-2023  润新知