精华内容
参与话题
问答
  • 条件查询 语法 select 查询列表 from 表名 where 筛选条件; 条件查询的查询顺序为: 第一步:表名,表示查询来自哪张表 第二步:筛选条件,在选定表中按条件来筛选 第三步:查询,查询筛选后的字段 分类 一、按条件...

    条件查询

    语法

    select 查询列表 from 表名 where 筛选条件;
    条件查询的查询顺序为:
    第一步:表名,表示查询来自哪张表
    第二步:筛选条件,在选定表中按条件来筛选
    第三步:查询,查询筛选后的字段

    分类

    • 一、按条件表达式筛选
      条件运算符:
      >,<,=,!=,<>,>=,<=
    • 二、按逻辑表达式筛选
      逻辑运算符:
      &&=and,||=or,!=not
      &&and:如果两个都为TRUE,结果为TRUE
    • 三、模糊查询
      like,between and,in,is null

    一、按条件表达式筛选

    • 案例1:查询工资>12000员工信息
    select * from employees where salary>12000;
    
    • 案例2:查询部门编号不等于90号的员工名部门编号
    select last_name,department_id from employees where department_id!=90;
    

    二、按逻辑表达式筛选

    • 案例1:查询工资在1000020000之间的员工名、工资、奖金
    select last_name,salary,commission_pct 
    from employees 
    where salary>=10000 and salary<=20000;
    
    • 案例2:查询部门编号不是在90-100之间,或者工资高于15000员工
    select * from employees 
    where department_id<90 or department_id>110 or salary>15000;
    

    三、模糊查询

    1.like
    一般和通配符搭配使用
    通配符
    %:任意多个字符,包含0个字符
    _:任意单个字符

    • 案例1:查询员工名包含字符a的信息
    select * from employees where last_name like '%a%';
    
    • 案例2:查询员工第三个字符为n,第五个字符为l的员工名和工资
    select last_name,salary from employees where last_name like '__n_l%';
    
    • 案例3:查询员工名中第二个字符为_的员工名"转移"
    select last_name from employees where last_name like '_\_%'; 
    # 此时通配符_作为普通字符需要转移,反斜杠\_
    
    select last_name from employees where last_name like '_$_%' escape '$';
    # escape是为了说明$符号为转移字符,在不用反斜杠的情况下
    

    2.between and
    优势:
      ①使用between and可以提高语句的简洁度
      ②包含临界值
      ③两个临界值不能调换顺序

    • 案例1:查询员工编号100-120之间员工所有信息
    select * from employees where employee_id>=100 and employee_id<=120;
    select * from employees where employee_id between 100 and 120;#更简洁
    

    3.in
    含义:
      判断某字段的值是否属于in列表中的某一项
    特点:
      ①使用inor提高语句简洁度
      ②in列表中的值类型必须一致或兼容。等价于=

    • 案例:查询员工工种编号是IT_PROTAD_VPAD_PRES中的一个员工名和工种编号
    select last_name,job_id from employees 
    where job_id = 'IT_PROT' or job_id='AD_VP' or JOB_ID='AD_PRES';
    
    select last_name,job_id from employees 
    where job_id in ('IT_PROT','AD_VP','AD_PRES');
    

    4.is null
    特点:
    =<>不能判断null
    is nullis not null可以判断null

    • 案例1:查询没有奖金的员工名和奖金率
    select last_name,commission_pct from employees
     where commission_pct is null; 
    
    • 案例2:查询有奖金的员工名和奖金率
    select last_name,commission_pct from employees 
    where commission_pct is not null; 
    

    5.安全等于 <=>

    • 案例1:查询有奖金的员工名和奖金率
    select last_name,commission_pct from employees 
    where commission_pct <=> null; 
    
    • 案例2:查询工资为12000的员工信息
    select last_name,commission_pct from employees where salary <=> 12000;
    

    is null<=>的比较
    is null:
      仅仅可以判断null值,但可读性高,建议使用
    <=>:
      既可以判断null值,又可以判断普通的数值,但可读性低

    • 查询员工号为176的员工的姓名和部门号和年薪
    select last_name,department_id,salary*12*(1+ifnull(commission_pct,0)) as 年薪 from employees;
    

    排序查询

    语法:

    select 查询列表 from 表 [where 筛选条件] order by 排序列表 [asc|desc]

    特点:

    asc代表升序,desc代表降序,默认是升序asc
    order by可以放单个字段,多个字段,表达式,函数,别名
    order by字句一般放在查询语句最后面,limit字句除外

    • 案例1:查询员工信息,要求工资从高到低排序
    select * from employees order by salary desc;
    select * from employees order by salary asc; # 默认从低到高
    
    • 案例2:查询部门编号>=90的员工信息,按入职时间先后排序[添加筛选条件]
    select * from employees 
    where department_id>=90  # 添加筛选条件
    order by hiredate asc; # 再日期先后顺序排序
    
    • 案例3:按年薪的高低显示员工信息和年薪[按表达式排序]
    select * ,salary*12*(1+ifnull(commission_pct,0)) 年薪 
    from employees 
    order by salary*12*(1+ifnull(commission_pct,0)) desc; # 按表达式排序
    
    • 案例4:按年薪的高低显示员工信息和年薪[按别名排序]
    select *,salary*12*(1+ifnull(commission_pct,0)) 年薪 
    from employees order by 年薪 desc; # 按别名排序
    
    • 案例5:按姓名长度显示员工的姓名和工资[按函数排序]
    select length('last_name') 字节长度,last_name,salary 
    from employees 
    order by length('last_name') desc; # 按函数length排序
    
    • 案例6:查询员工信息,要求先按工资排序,再按员工编号排序[按多个字段排序]
    select * from employees 
    order by salary asc,employee_id desc; # 多字段排序
    
    展开全文
  • 数据库的查询总结-----按条件查询

    万次阅读 2018-05-27 09:17:46
    简单查询查询所有字段select * from 表名; 例: select * from students; 查询指定字段select 列1,列2,... from 表名; 例: select name from students; 使用 as 给字段起别名select id as 序号, name as 名字, ...
    • 简单查询
    • 查询所有字段
    select * from 表名;
    例:
    select * from students;
    
    • 查询指定字段
    select1,列2,... from 表名;
    例:
    select name from students;
    
    • 使用 as 给字段起别名
    select id as 序号, name as 名字, gender as 性别 from students;
    
    • 可以通过 as 给表起别名
    
    -- 如果是单表查询 可以省略表明
    select id, name, gender from students;
    
    -- 表名.字段名
    select students.id,students.name,students.gender from students;
    
    -- 可以通过 as 给表起别名 
    select s.id,s.name,s.gender from students as s;

    消除重复行

    • 在select后面列前使用distinct可以消除重复的行
    select distinct1,... from 表名;
    例:
    select distinct gender from students;

    条件

    使用where子句对表中的数据筛选,结果为true的行会出现在结果集中

    • 语法如下:
    select * from 表名 where 条件;
    例:
    select * from students where id=1;
    
    • where后面支持多种运算符,进行条件的处理
      • 比较运算符
      • 逻辑运算符
      • 模糊查询
      • 范围查询
      • 空判断

    比较运算符

    • 等于: =
    • 大于: >
    • 大于等于: >=
    • 小于: <
    • 小于等于: <=
    • 不等于: != 或 <>

    例1:查询编号大于3的学生

    select * from students where id > 3;
    

    例2:查询编号不大于4的学生

    select * from students where id <= 4;
    

    例3:查询姓名不是“黄蓉”的学生

    select * from students where name != '黄蓉';
    

    例4:查询没被删除的学生

    select * from students where is_delete=0;
    

    逻辑运算符

    • and
    • or
    • not

    例5:查询编号大于3的女同学

    select * from students where id > 3 and gender=0;
    

    例6:查询编号小于4或没被删除的学生

    select * from students where id < 4 or is_delete=0;
    

    模糊查询

    • like
    • %表示任意多个任意字符
    • _表示一个任意字符

    例7:查询姓黄的学生

    select * from students where name like '黄%';
    

    例8:查询姓黄并且“名”是一个字的学生

    select * from students where name like '黄_';
    

    例9:查询姓黄或叫靖的学生

    select * from students where name like '黄%' or name like '%靖';
    

    范围查询

    • in表示在一个非连续的范围内

    例10:查询编号是1或3或8的学生

    select * from students where id in(1,3,8);
    
    • between ... and ...表示在一个连续的范围内

    例11:查询编号为3至8的学生

    select * from students where id between 3 and 8;
    

    例12:查询编号是3至8的男生

    select * from students where (id between 3 and 8) and gender=1;
    

    空判断

    • 注意:null与''是不同的
    • 判空is null

    例13:查询没有填写身高的学生

    select * from students where height is null;
    
    • 判非空is not null

    例14:查询填写了身高的学生

    select * from students where height is not null;
    

    例15:查询填写了身高的男生

    select * from students where height is not null and gender=1;

    展开全文
  • 条件查询

    2019-04-17 21:47:54
    条件查询 1.每个系统开发无非是为了人们方便去管理数据和使用数据了,使用数据当然少不了就是数据的查询了。如果连最基本的数据查询功能那就不行了,总不能还是一页页也去翻一页一页去查是吧,要是几十万条数据呢要...

                                                                                  条件查询

    1.每个系统开发无非是为了人们方便去管理数据和使用数据了,使用数据当然少不了就是数据的查询了。如果连最基本的数据查询功能那就不行了,总不能还是一页页也去翻一页一页去查是吧,要是几十万条数据呢要查到何时何月呢,多浪费时间,查询、查询当然不是靠说的,不是你说什么查询就查询什么,计算机是不会听得懂的,查询当然是需要根据某个条件去查询的,条件查询就是已经存在有的数据中的某一个作为依据进行查询,举个列子吧好比如一个学生的信息有学院、年级、班级、学号、姓名。学院、年级、班级、学号、姓名这些就是查询的条件,比如我想知道某某学院的所有学生,我们只用“学院”作为条件就行了,就可以把该学院的所有学生信息出来了,如果还想知道到某学院下的某年级下的所有学生,只要在学院的基础加多一个年级作为条件,这样就可以把这个学院的该年级下的学生都查询出来了,往下面查的同理可得,甚至可以查到个人信息。

    2.html部分

    <label class="col-form-label mr-2" for="searchAcademeID">学院</label>

    <select id="searchAcademeID" class="form-control form-control-sm mr-3 col-sm-2 col-md-1"></select>

    我们看下一页面这里学院后面放了一个select这样的一个标签,现在的select标签里面是没有选项的,我们以前的用是在select标签里面放一个option这样的标签作为下拉列表中的选项,那么现在我们怎么把下拉框的数据放进来呢,首先就是查询出数据库面的有哪些学院,然后再把查出来的学院放到select里面去

    3.下拉框数据的绑定

    我们加载出来的就是这样的一个页面

    进到页面之后只有学院这个下拉框是有数据的,后面的下拉框是没有的,当我们选定学院后年级下拉框的数据就出来了,不同的学院有不同的年级,首先要确认是学院,同理班级就由学院和年级决定了,在这里我们怎么把学院的内容查出来呢?在这用到createSelect这样一个已经封装好方法,这个方法createSelect(selectId, url, value)有三个参数,第一个参数是需要查询的ID,第二个参数是请求的路径,第三个是显示的值.

    页面代码写好了到控制器写查询的方法了,学院的就是简单一句代码就ok

    //学院下拉框数据绑定
    createSelect("searchAcademeID", "selectAcademe");

    在写这个方法之前我们还要创建一个实体类

    public class SelectVo

        {

            public int id { get; set; }// 选中值

            public string text { get; set; }// 显示值

    }

    为什么要要创建这样一个类呢?因为我们看到的是文字(text:显示值),而计算机是读不了这些文字的,而是通过读到ID获取到这一行数据显示出来的(id:选中值),把查询到的id都放在id里面,查到名称都放到text里面

    public ActionResult selectAcademe()

     { //查询数据

       List<SelectVo> listAcademe = (from tbAcademe in myModels.SYS_Academe

                                   select new SelectVo

                                 {

                                   id = tbAcademe.AcademeID,//选中值

                                   text = tbAcademe.AcademeName//显示值

    }).ToList();

    //List<SelectVo> listAcademe2 = myModels.SYS_Academe.Select(m => new SelectVo { id = m.AcademeID, text = m.AcademeName }).ToList();

     //拼接"请选择"项

    listAcademe = Common.Tools.SetSelectJson(listAcademe);

    return Json(listAcademe, JsonRequestBehavior.AllowGet);

    }

    使用Linq语句对这个学院表进行查询出来,再进进行赋值,最后把这数据返回到页面。这里还一个问题,页面运行之后,下拉框哪里会默认一个值,把默认的那个数据查询显示了出来,假如我想一进入到页面加载是全部数据而不是默认的那个数据,有些时候我们是不需要根据这个默认值进行查询的,这个时候我们可以加一个请选择项给它,让它的的id为零这样子进入到页面先显示是请选择这个选项了,实际上查询出来的就是所有的信息了,这个操作要在数据返回页面之前我们要进行一个拼接“请选择”这个选项,就是在已经查出数据的基础上在前面加上这一项。

    在拼接前要添加这样一个类

    public static List<SelectVo> SetSelectJson(List<SelectVo> select)

      {

                //创建列表对象

                List<SelectVo> list = new List<SelectVo>();

                //创建实体对象

                SelectVo selectVo = new SelectVo

                {

                    id = 0,

                    text = "---请选择---"

                };

                //将实体对象添加到对象列表

                list.Add(selectVo);

                //将数据集添加到对象列表

                list.AddRange(select);

                return list;

            }

    下一级就是年级了,上下级存在关系,由上一级数据发生改变时,触发下一级下拉框数据的绑定,这里用了一个change改变事件,首先要获取到选中学院ID,然后同样是上面方法绑定年级下拉框,查询方法差不多就是加多一个参数和一个条件,传一个参数到控制器作为条件的匹配,查询到的数据再返回到页面来,最后清空一下班级下拉框

                //学院下拉框数据改变,触发年级下拉框数据绑定

                $("#searchAcademeID").change(function () {

                    //获取选中的学院ID

                    var academeId = $("#searchAcademeID").val();

                    //绑定年级下拉框

                    createSelect("searchGradeID", "selectGrade?AcademeID=" + academeId);

                    //清除班级下拉框

                    $("#searchClassID").empty();

                });

    同理班级下拉框也是同样使用相同的方法绑定数据

    展开全文
  • 条件查询方法

    2019-05-04 20:58:16
    条件查询可以分为单条件查询跟多条件查询。单条件的查询比较简单,而多条件查询就难一点,但是只要明白控制器跟数据库之间的联系,那么单表查询跟多表查询都不是很难的。 一、多条件查询 在多条件查询之前,在页面...

    条件查询可以分为单条件查询跟多条件查询。单条件的查询比较简单,而多条件查询就难一点,但是只要明白控制器跟数据库之间的联系,那么单表查询跟多表查询都不是很难的。
    一、多条件查询

    1. 在多条件查询之前,在页面上,得先获取要查询的条件,你要查询哪张表,表里的哪些数据,就可以先在页面上获取到先;
    2. 获取到查询的条件之后,就得判断一下要查询的数据是否为空,是否是找得到的,因为如果是找不到的话,那么在控制器写了查询的方法之后一启动,然后浏览器上面就会出现找不到的现象,甚至会报错。所以得判断一下;
    3. 判断完数据之后,就得加载一下数据的表格,即是数据表格的重载,而数据表格的重载又分为自动化渲染跟方法级渲染的重载。这两个方法都用了reload的方法,只是用法不太一样。自动化渲染的重载:
    tabStudent = layuiTable.reload("tabStudent", {
    //路径
                      url: "",
                      where: {
    //第一个为形参,第二个为实参
                     	 AcademeID: AcademeID, 
                          GradeID: GradeID,
                          ClassID: ClassID,
                          StudentDetail: StudentDetail
                 }
     });
    

    而方法级渲染的重载就是:

    tabStudent.reload({
    //路径
                    url: "",
                    where: {
    //第一个为形参,第二个为实参
                        AcademeID: AcademeID,
                        GradeID: GradeID,
                        ClassID: ClassID,
                        StudentDetail: StudentDetail
                    }, page: {
    //重新从第一页开始
                        curr:1 
        }
    });
    
     这上面的路径是要在控制器那边写上它的方法才可以把它复制粘贴到里面,或者你写了那个要控制器传输到页面的方法名称,然后再复制粘贴到控制器写一下它的方法都可以。
    

    而这个路径一点的差错都不能有,有一点差错的话都会报错,而且数据报异常之后都会提示你路径是否错误或者文件名字已改,找不着。
    4. 然后写完之后就到控制器写方法,首先控制器那边要传进来你在页面声明的那几个变量,既然是多张表联表查询,当然是要分页比较好一点。
    而想要实现分页,就得创建一个实体类,名叫LayuiTablePage的类,然后再到页面写一下分类的代码,再回到控制器那边把它当做参数传进来,就可以实现分页的效果了。
    5. 在这个方法里面写内容首先就是要联表查询,而联表的条件就是join…in
    …on…equals…;

    然后表连接完之后在后面new一个实体对象,再在实体对象后面的花括号里面写你要查询的信息:比如
    在这里插入图片描述
    6. 这个写完了之后就到了条件筛选了,这个条件的筛选是用Lambda表达式来写的,因为这个的代码简化了一些
    在这里插入图片描述
    这个就是利用Lambda表达式写出来的条件筛选;
    7. 然后就要计算一下数据总的条数
    8. 再分页处理一下,把在页面写的分页数据,在控制器这里分三步曲走:
    第一就是Skip,这是开启分页,第二步是Take指定分页的条数,最后就是ToList一下;
    但是最重要的一点就是,Skip跟Take使用之前,一定要使用orderby进行排序,要不然浏览器启动绝对会报错
    在这里插入图片描述
    9. 分页完成还得实例化一下数据,实例化数据也有两种写法,一就是

    //**new对象 实例化**(一)
            LayuiTableData<EmployeeVo> layuiTableData = new LayuiTableData<EmployeeVo>
            {
                 data = dbEmployee,
    //总数据
                 count = totalRow
    };
    

    二是

    //new对象 实例化(二)
          LayuiTableData<EmployeeVo> layuiTableData = new LayuiTableData<EmployeeVo>();
          layuiTableData.data = dbEmployee;
    layuiTableData.count = totalRow;
    

    这些括号里面的内容都是根据需要创建的实体类
    10. 最后一步当然就是返回了。
    二、单条件查询
    1.单条件的查询就比较简单一点,直接可以在控制器那边写一下查询就可以了
    查询之前可以先new一个实体对象,然后再写单表的查询;也可以直接不用new就直接查询
    如果是先new一下的话,
    在这里插入图片描述
    然后把listPosition直接等然后后面接查询的表
    如果不是new一下的话,就直接等过去然后查询就可以了
    在这里插入图片描述
    还有最后一定记得得写返回值
    想要哪张表的信息,就可以查哪张表,但是在数据库里面得找得到你想要查的表,自己胡乱查是没有数据的。
    查询之前看一下数据库里面有哪些表,以及那些表与表之间的联系,这些表的联系可以一对一,也可以一对多,还可以多对多,就是一张表可以连接多张表,也可以被多张表连接;而多对多其实以n个一对多的组合,即通过一个“关系表”来联系“n个实体表”。
    在这里插入图片描述

    就像上面的那张表一样,那张用户表就是多对一的表,看箭头的指向就知道了,用户表被其他很多张表对应着,而那张新得表就是一对多的表,就是这张心得的表对很多张其他的表,这是表与表的对接关系,而他们的连接是靠外键把表连接起来的。上面那张图里那个pk是主键来的,而那个fk就是外键了。但是一张表里面只能有一个主键,因为要跟主键ID来排一下序的,而外键就不一样,外键可以有很多个。

    展开全文
  • 1条件查询的语法 SELECT * FROM <表名> WHERE <条件表达式> SELECT * FROM students WHERE score >= 80(指定条件“分数在80分或以上的学生”) 2.AND条件查询 条件表达式可以用<条件1> AND &...
  • MySQL 条件查询

    千次阅读 2018-10-04 14:43:44
    where 条件表达式 举例,查询表student中id=4的学生姓名,过程及查询结果如下: 举例查询name=wusong的学生信息;过程及结果如下: 举例查询grade大于80的学生信息;过程及结果如下: 二、带in关键字的...
  • MySQL条件查询语句(一)

    万次阅读 2018-03-18 22:21:30
    条件查询 注意:条件查诟需要用到 where 询句,where 必须放到 from 询句表的后面; 执行顺序:先from再where过滤后再检索出来。 1、、支持如下运算 2、等号(=)操作符 (1)、查询薪水为5000的员工 例如:...
  • 条件 使用where子句对表中的数据筛选,结果为true的行会出现在结果集中 语法如下: select * from 表名 where 条件; 例: select * from students where id=1; where后面支持多种运算符,进行条件的处理 比较运算符...
  • Mysql条件查询语句(二)

    万次阅读 2018-03-24 12:32:39
    1、查询薪水为1600到3000的员工(第一种方式:采用&gt;= 、&lt;=) 例如:select empno,ename,sal from emp where sal &gt;= 1600 and sal &lt;= 3000; 2、查询薪水为1600到3000的员式(第二种...
  • es_head怎么根据查询条件删除数据?除了id那种简单的。
  • java 按条件查询

    千次阅读 2017-12-28 15:04:38
    条件查询  按条件查询分为几个步骤:  1.从页面上获取查询条件  2.将查询条件传到后台相应的方法去  3.将这些查询条件全部放在一个map  4.写sql语句进行查询并把结果返回给前端页面上去展示 ...
  • 详述 Elasticsearch 通过范围条件查询索引数据的方法

    万次阅读 多人点赞 2019-04-05 11:15:59
    在使用 Elasticsearch 的时候,我们可能会遇到需要**以范围为条件查询索引数据**的需求。有两种方法可以实现我们的需求: - 第一种:在服务器或者终端,使用命令来查询索引数据; - 第二种:编写程序,通过 Elastic...
  • 最近公司项目用到Elasticsearch,自己摸索了好几天才把这个弄明白,和大家分享一下: 一、建立Elasticsearch连接 package com.wlsj.yshj.config; import org.apache.http.HttpHost; import org.apache....
  • HBase条件查询(多条件查询

    万次阅读 2018-09-04 13:49:40
    Author:Pirate Leo myBlog: http://blog.csdn.net/pirateleo/ myEmail: codeevoship@gmail.com 转载请注明出处,谢谢。 文中可能涉及到的API: Hadoop/HDFS:...
  • SpringDataJpa -- 多条件查询

    千次阅读 2018-03-31 17:58:44
    前言:使用SpringDataJpa 进行多条件查询。 一、单表的多条件查询 @Override public Page&lt;Courier&gt; pageQuery(Courier model, Pageable pageable) { //封装查询对象Specification Specification...
  • 在用户表,有一个生日字段 birth,现在的需求是根据传入的时间段参数,查询此时间段内过生日的用户列表,需要考虑跨年的情况
  • SQL 多条件查询

    千次阅读 2018-05-15 09:50:11
    转载自:https://blog.csdn.net/sjf0115/article/details/8720520网上...让我们想像如下的场景:用户要求提供一个灵活的查询界面来根据各种复杂的条件查询员工信息,界面如下图:界面列出了四个查询条件,包括按...
  • vue多条件查询

    千次阅读 2019-08-23 11:50:57
    <template> <div class="app-container"> <div class="filter-container" style="display:flex;justify-content:space-between;align-items:center"> <div>...-- 部...
  • //查找男生 //查找女生
  • HBase高性能复杂条件查询引擎

    万次阅读 多人点赞 2014-06-17 20:10:36
    该方案设计之初仅寄希望于通过二级索引提升查询性能,由于在前期架构时充分考虑了通用性以及对复杂条件的支持,在后来的演变逐渐被剥离出来形成了一个通用的查询引擎。HBase在大数据领域的应用越来越广泛,成为...

空空如也

1 2 3 4 5 ... 20
收藏数 1,296,211
精华内容 518,484
关键字:

条件查询