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分别查询
一个同胞的:
sql关于对一个字段同时满足多条件判断来筛选查询的更多相关文章
- sql server中将一个字段根据某个字符拆分成多个字段显示
sql server 数据库中某张表(Person)的数据信息是: ID Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址信息显示形式改 ...
- MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据
场景: 表名:testsuer id name 1 小红,小李,李红,小法 要结果值为: 1 小红 1 小李 1 李红 1 小法 MYSQL函数解释 ...
- [SQL]SQL中把一个字段的数据分多行显示
其实你完全可以写个自定义函数就OK了 . =================================================================== create func ...
- sql根据某一个字段重复只取第一条数据
比如上图,取3,4行记录的第一行也就是3行,而不返回4行. 使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值 ...
- SQL 批量修改一个字段的值为另一个字段的值
AND create_time BETWEEN '2016-07-25 14:30:00' AND '2016-07-25 15:20:28'; AND create_time BETWEEN '20 ...
- sql中使一个字段升序,一个字段降序
ORDER BY _column1, _column2; /* _column1升序,_column2升序 */ ORDER BY _column1, _column2 DESC; /* _colum ...
- 一个list<Map>里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中
//不建议使用Map保存这些,使用实体bean更好 package com.rxlamo.zhidao; import java.util.*; public class Main { ...
- SQL利用Case When Then Else End 多条件判断
Select Case When a is not null then a When b is not null then b When c is not null then c When d is ...
- And【sql语句之为何用and一个字段两个值得不到表中的数据】
一.[一个表的一个字段的多个条件用and连接] 用and是查不到值的, and是多个条件同时成立, 也就是一个字段是不能同时等于两个值的. '; 二[相同两个表的两个相同字段的查询用and连接] '; ...
随机推荐
- kali访问宿主机Web页面解决方案
1.首先安装好PHPDVWA测试平台,将等级设置成low,kali中自带了python2.7.为了不再宿主机中修改python3.6,所以要利用kali来模访问宿主机中的Web页面.如果不进行配置修改 ...
- cf1133 bcdef
b所有数模k,记录出现次数即可 #include<bits/stdc++.h> using namespace std; int main(){ ]; ]={}; cin>>n ...
- jvm(转)
原:https://blog.csdn.net/luomingkui1109/article/details/72820232 1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构 ...
- SpringMvc框架MockMvc单元测试注解及其原理分析
来源:https://www.yoodb.com/ 首先简单介绍一下Spring,它是一个轻量级开源框架,简单的来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开 ...
- jmeter 控制线程组执行顺序
这个要配合全局变量.if和while来实现BeanShell取样器,全局变量:${__setProperty(newswitch,${switch1},)}if条件:"${__P(newsw ...
- linux的systemctl服务及其使用
一.systemd 系统初始化程序,系统开始的第一个进程,PID为1 二.systemctl命令 systemctl list-units ##列出当前系统服务的状态 systemctl lis ...
- 安装cx_Oracle 6
首先声明,本文是在Linux 环境下进行安装.不涉及Windows 版安装. 一. 了解cx_Oracle 安装要求 要python 通过cx_Oracle 6 操作Oracle 数据库,以下几个条件 ...
- gitlab的完全卸载
一:先停止gitlab gitlab-ctl stop 二:卸载gitlab部分(之前我是rpm安装的,这里rpm卸载) rpm -e gitlab-ce 三:发现系统进程还有一个gitlab的进 ...
- Navicat Premium 12.1.8.0安装与激活
本文介绍Navicat Premium 12.1.8.0的安装.激活与基本使用. 博主所提供的激活文件理论支持Navicat Premium 12.0.x系列和Navicat Premium 12.1 ...
- (转)HTTPS到底是个啥玩意儿?
详细见:https://blog.csdn.net/zgwangbo/article/details/50889623 ,建立交互的过程见下图: