对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问题. NOLOCK 和 READPAST 都是处理查询.插入.删除等操作时候,如何应对锁住的数据记录.但是这时候一定要注意NOLOCK 和 READPAST的局限性,确认你的业务逻辑可以容忍这些记录的出现或者不出现: 简单来说: NOLOCK 可能把没有提交事务的数据也显示出来. READPAST…
查询语句中select from where group by having order by的执行顺序   1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--where--group by--having--order by    其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序  与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行  from--where--group by--having--select--or…
TP 查询语句中如何使用 FIND_IN_SET 这样的查询方法 $condition['_string'] = 'FIND_IN_SET('.$citys.',city)';…
前言 之所以写这篇文章,是源于以前看过的关于sql语句优化的帖子,里面明确提到了在sql语句中不要使用 * 来做查询,就像下面的规则中说的 2.尽量避免使用select *,返回无用的字段会降低查询效率.如下: SELECT * FROM t 优化方式:使用具体的字段代替*,只返回使用到的字段. 但是中国有句姥话叫“尽信书不如无书”,难道在sql查询语句中使用星号就真的慢的要死,难道加索引也不行?带着这些个疑问,我进行了一些测试.结果发现,江湖传说未必真的靠得住.那具体测试情况是咋样的呢?下面且…
项目中和前端联调的时候,发现Mysql查询语句中字符型字段值过滤是不区分大小写的,之前没有关注过这个设置,特意去网上看了下,原因是Mysql中“COLLATE”属性区分大小写,而该属性默认值为“utf8_general_ci”,这个值表示是不区分大小写的.现将解决方法记录如下: 1.设置“COLLATE”属性值为“utf8_bin”或者“utf8_gerneral_cs”,utf8_bin表示二进制比较,同时也支持区分大小写:在Mysql5.6.10版本中,不支持utf8_genral_cs:…
来自:http://yushine.iteye.com/blog/775407 FROM_UNIXTIME把 unix时间戳转换为标准时间 unix_timestamp把标准时间转换为 unix时间戳//查询语句中不能使用strtotime()函数!但是可以使用unix_timestamp DATE_FORMAT('1997-10-04 22:23:00','%Y-%m-%d') 格式化时间 如:select FROM_UNIXTIME(pubdate) from article where p…
1.常见用法: (1)搭配%使用 %代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据: (2)搭配_使用 _代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一条数据. 2.使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题 (1)尽量少以%或者_开头进行模糊查询 通过explain执行计划,我们发现,使用like模糊查询时,如果不以%和_开头查询的话,索引还是有效e68a84e799bee5baa6e997aee7ad94313333663…
1, 简单说明. select * from tb_name where 1[不为零即可];则会显示所有记录,select * from tb_name where 0;则不显示任何记录 假设数据库中的一个字段aaa的值有1,2,3.当查询语句为 select * from tb_name where aaa & 1;  则查询结果中会显示出aaa为1和3的所有记录,而不会有aaa为2的记录. 查询过程为:每条记录中的aaa字段和1做位与运算&;结果不为0则显示,为零则不显示. 2, 一个…
首先引入语句来源,表结构和数据如下: 需求是:查出员工(personname)在不同店铺(store)的总薪酬(salary),相同店铺输出store,不同店铺输出multi_store. 正确查询语句如下: SELECT personname,(case when count(distinct Store)>1 then 'multi_store' else MAX ( store) end),sum(Salary) FROM dbo.StaffInformation GROUP BY Per…
in in可以分为三类: 一. 形如select * from t1 where f1 in ( &apos:a &apos:, &apos:b &apos:),应该和以下两种比较效率 select * from t1 where f1= &apos:a &apos: or f1= &apos:b &apos: 或者 select * from t1 where f1 = &apos:a &apos: union all se…
sql语句中给子查询或其他查询类型加别名的时候可能会报错 java.sql.SQLException: 无法转换为内部表示 原因是select返回类型的实体类中没有写该别名 原来的实体类 更改后的实体类…
1. FROM 指明查询来源 2. WHERE筛选元组 3. GROUP BY进行分组 4. HAVING 筛选分组 5. SELECT 投影出指定的字段列 6. ORDER BY 对结果集排序 7. LIMIT 取结果的子集 [总结] ⑴若一查询语句包含上述七个子句,那么它会按照上述1~7步依次执行,每步都会产生一个中间结果. ⑵一旦进行了GROUP BY分组,select子句会将每组合并成一条记录,因此select子句后的投影字段要么在聚集函数中,要么作为GROUP BY后的分组字段.…
先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice`.`read_time` , `f`.`fnum` , `f`.`forg` , `f`.`fdst` , `f`.`actual_parking` AS `parking` , `f`.`scheduled_deptime` , `f`.`estimated_deptime` , `f`.`ac…
经常用到在数据库中查询中间几条数据的需求 比如下面的sql语句: ① selete * from testtable limit 2,1; ② selete * from testtable limit 2 offset 1; 注意: 1.数据库数据计算是从0开始的 2.offset X是跳过X个数据,limit Y是选取Y个数据 3.limit  X,Y  中X表示跳过X个数据,读取Y个数据 这两个都是能完成需要,但是他们之间是有区别的: ①是从数据库中第三条开始查询,取一条数据,即第三条数据…
Java Web 端做查询时,性别字段存的是数字,1代表男,2代表女,取数据时将性别转为汉字显示在页面,sql语句如下,结果发生了问题  select a.emp_id,a.emp_name ,case when a.emp_gendar=1 then '男' when a.emp_gendar=2 then '女' end as emp_gendar, b.post_namefrom  t_employee_info a, t_position_info bwhere a.post_id = …
LIKE语句的语法格式为: select * from 表名 where 字段名 like 对应值(字符串) 注:主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应字符串的. 下面列举常用的几种标识含义: A:% 表示零个或多个字符的任意字符串: 1. LIKE'Mi%' 将搜索以字母 Mi开头的所有字符串(如 Michael). 2. LIKE'%er' 将搜索以字母 er 结尾的所有字符串(如 Worker.Reader). 3. LIKE'%en%' 将搜索在任何位置包含字…
查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中 select 和 from 是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行 from--where--group by--having--select--order by, from:需要从哪个数据表检索数据 where:过滤表中数据的条件 group by:如何将上面过滤出…
一.适用场景 1.使用了xml形式的mapper.2.不想在select查询中大量使用<if>标签来判断条件是否存在而加入条件. 二.步骤 1.自定义wrapper继承QueryWrapper: import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.shiro.util.StringUtils; public class CustomWrapper<T> exten…
使用where语句访问数据库时where语句用上文中以及定义过的变量来查询. string sql3 = string.Format("update Ships set ContainerNum='"+list1[0].ContainerNum+"' where Name='"+list[0].ShipName+"'"); Ships是表名  ContainerNum是表中字段名 list1[0].ContainerNum是上文的一个Int 类型…
前段时间遇到一个存储过程,参数之一是一个字符串,在存储过程中,把字符串拆分成一个临时表之后存为一个key值的临时表,作为其中一个查询条件, 逻辑实现上有两种处理方式 insert into #t select key from split_function('传递进来的字符串',',') 第一种是与物理表做inner join,类似如下 select * from tableA a inner join tableB b on a.id = b.id inner join #t c on b.k…
case when语句语法如下: case when  表达式  then valueA  else valueB  end; 具体使用如下: select    (case when a.column1 >=1 then  '成功'  else  '失败'  end) as Success_flag from tableA  a 如果a.column1的值大于等于1,那么Success_flag的值将是‘成功’,否则‘失败’. case when和decode函数用法有一些相似,只是decod…
主要原因是因为EF采用的 DataReader来进行数据的存储,此时connection使用的是同一个. 例如: list = _tzNewsService.GetAll().Where(w => w.EditorId == AdminId || (w.CheckStatus == 3&&_administratorService.GetById(w.EditorId).OrganizeId==currentadmin.OrganizeId)).OrderByDescending(w…
sql中的连接查询分为3种, cross join,inner join,和outer join ,  在 cross join和inner join中,筛选条件放在on后面还是where后面是没区别的,极端一点,在编写这两种连接查询的时候,只用on不使用where也没有什么问题.因此,on筛选和where筛选的差别只是针对outer join,也就是平时最常使用的left join和right join. 1, cross join,inner join,和outer join 现有两张表,A…
今天写个小demo的时候发现sql语句里面的username为中文的时候就不能查到正确结果,sql语句如下: String sql = "select * from user where username=? and password=?"; 但是在navicat里面直接查询就能显示,如下图: 这说明了sql语句的中文并没有能正确转化 最后找到了解决办法,在连接数据库的url后面添加?useUnicode=true&characterEncoding=utf8 "jd…
转:http://blog.sina.com.cn/s/blog_1512521570102wrfl.htmlselect cost,@a:=@a+1 from testone,(select @a:=0) as a; mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了. 第一种用法:set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量 第二种用法:select @num:=1; 或 select @num:=字段名 from…
//删除分类 public function del(){ $cid = I('get.cid'); $cate = M('category')->field('cid,pid')->select(); $cate = $this->son_cate($cate,$cid); $cate[] = $cid;//$cate为一个数组 $where['cid'] = array('in',$cate);//cid在这个数组中, M('category')->where($where)-…
前言 今日在LeetCode刷MySql的题,遇到一题,题目到没什么,解答完了之后习惯去看此题的题解,有位大佬的思路让博主感觉很惊艳,至此,特地记录学习一下. 题目 解答 乍一看题目也没啥,分数排名,思路是首先获取每个分数对应的排名,使用变量实现排名顺序,生成一张临时表,最后用主表关联临时表按主表分数倒序得到每条分数的排名,可能大部分童鞋可能都是跟博主一样的思路,实现代码如下 SELECT s.Score, s1.`Rank` FROM Scores s, ( SELECT @rownum :=…
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要…
From Person this Where this.name like '%abc%' @SuppressWarnings("unchecked") @Override public List<ReportLog> query(String type) { return getSession().createQuery(" from Person this WHERE this.name like :type ") .setParameter(&qu…
直接运行sql出出现乱码,在中文字符前加N就能够正常显示了.N的含义就是用nvarchar格式显示.…