当前位置: 首页 > news >正文

如何快速的做网站宁波seo自然优化技术

如何快速的做网站,宁波seo自然优化技术,工业软件开发技术就业前景,锦州网站建设渠道数据库相关链接: 数据库--数据类型:http://t.csdn.cn/RtqMD 数据库--三大范式、多表查询、函数sql:http://t.csdn.cn/udJSG 数据库--MySQL增删改查:http://t.csdn.cn/xkiti 一、一条sql语句通常包括: select fro…

数据库相关链接:

数据库--数据类型http://t.csdn.cn/RtqMD

数据库--三大范式、多表查询、函数sql:http://t.csdn.cn/udJSG

数据库--MySQL增删改查:http://t.csdn.cn/xkiti



一、一条sql语句通常包括:

select   from   join   where   group by   having   order by   聚合函数   limit   top  not  and    or   

二、浅谈执行顺序:

1)、首先确定一点,并不是按照我们写的语句顺序,从左—>右执行的

2)、获取结果集 ----> 指定查询的某些字段 --> 按照某些内容进行排序

首先 执行from ,join 确定表之间的关系,得到初步的----->结果集1

where 对结果集1 进行筛选 得到–>结果集2

group by 进行分组 -->结果集3

对结果集3进行having筛选,得到 ---->结果集 4

指定查询的字段:

select 指定需要查询的字段,也可以是聚合函数 —>结果去重

合并分组结果集,并按照order by 的 条件进行排序

如果存在limit 或者top之类的话,这是在最后才会执行的

 三、实际问题and or

mybatisplus遇到的and和or优先级的问题处理

需求:

想在name={ 张三,李四,王五 }  中查找  密码=88888 或者 年龄=20的记录

SELECT id,user_name,password,name,age,email,birthday FROM tb_user
WHERE password = 88888 OR age >= 20 AND name IN ("张三","李四","王五")

 java查询代码:

(使用MyBatisPlus查询)

@Testpublic void testLogicSelect(){QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.eq("password","88888").or().ge("age",20).in("name","张三","李四","王五");/*** SELECT id,user_name,password,name,age,email,birthday FROM tb_user* WHERE password = ? OR age >= ? AND name IN (?,?,?)*/List<User> userList = userMapper.selectList(wrapper);userList.forEach(System.out::println);}
查询结果: 

看似需求的sql查询代码没问题,执行出来就发现问题,为什么会有“赵六”

User(id=1, userName=zhangsan, password=88888, name=张三, age=18, email=test1@yh.cn, birthday=2019-09-26T11:42:01)
User(id=2, userName=lisi, password=88888, name=李四, age=20, email=test2@yh.cn, birthday=2019-10-01T11:42:08)
User(id=3, userName=wangwu, password=88888, name=王五, age=28, email=test3@yh.cn, birthday=2019-10-02T11:42:14)
User(id=4, userName=zhaoliu, password=88888, name=赵六, age=21, email=test4@yh.cn, birthday=2019-10-05T11:42:18)

问题的根本原因就是在于这个 AND 和 OR 的优先级。关系型运算符优先级高到低为:NOT > AND > OR

wrapper.eq("password","88888").or().ge("age",20).in("name","张三","李四","王五");

1.  先执行了后两句.ge("age",20)
                .in("name","张三","李四","王五");

2.  将1.执行结果和第一句进行or或运算

                .eq("password","88888")
                .or()
                .ge("age",20)
                .in("name","张三","李四","王五");

解决方案:

这里用到了lambda表达式,从格式化后的代码也可以看出运算级别。

代码里的wp名字随便起,但是不能是wrapper,即不能是wrapper = new QueryWrapper<>();

@Testpublic void testLogicSelect() {QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.and(wp -> wp   //这里的wp名字随便起,但是不能是wrapper,即不能是wrapper = new QueryWrapper<>();.eq("password", "88888").or().ge("age", 20)).in("name", "张三", "李四", "王五");/*** SELECT id,user_name,password,name,age,email,birthday FROM tb_user* WHERE password = ? OR age >= ? AND name IN (?,?,?)*/List<User> userList = userMapper.selectList(wrapper);userList.forEach(System.out::println);}

小结:

第一句话:从执行顺序中我们可以发现,所有的查询语句都是从 FROM 开始执行的。

第二句话:在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。 

第三句话:关系型运算符优先级高到低为:NOT > AND > OR

看到这了,点个赞再走吧!

http://www.hkea.cn/news/800611/

相关文章:

  • 教育网站制作哪家服务好全球外贸采购网
  • 响应式网络网站源码百度关键词查询网站
  • 南京网站制作设计公司网络运营团队
  • 阿里巴巴上怎样做自己的网站seo网站优化网站编辑招聘
  • 网站做付费推广都需要问什么网络热词2022
  • 给男票做网站表白的软件产品市场推广计划书
  • 西安网站制作定制怎么制作自己的个人网站
  • wordpress 如何移动端盐城seo优化
  • asp.net 制作网站开发百度竞价排名软件
  • 百度爱采购推广平台天津网络推广seo
  • 福州市闽侯县建设局网站推广引流吸引人的文案
  • wordpress目录 读写权限泰安短视频seo
  • 东莞建设网站流程澎湃新闻
  • 萧县住房和城乡建设局网站seo排名推广工具
  • 企业网站php模板下载百度百科官网首页
  • 做愛視頻网站在线网页制作网站
  • 织梦pc怎么做手机网站搜索引擎优化的基础是什么
  • 课程建设网站设计源码爱站网反链查询
  • 安徽省建设业协会网站个人网页制作教程
  • 好的摄影网站推荐福州seo顾问
  • html做的好看的网站如何宣传推广产品
  • 微信手机网站制作怎么引流客源最好的方法
  • 宿州建设网站公司前端seo搜索引擎优化
  • 做王境泽表情的网站百度seo关键词优化排名
  • 怎么选择无锡网站建设虚拟主机搭建网站
  • 做原油期货关注什么网站搜索引擎优化是做什么
  • 微信小程序怎么制作游戏安卓优化清理大师
  • 胶南做网站初学者做电商怎么入手
  • 网站为什么要维护佛山网络营销推广
  • 国企网站建设报告怎么建造自己的网站