sql整理
来源:互联网 发布:川南减震淘宝店 编辑:程序博客网 时间:2024/05/22 09:38
*插入数据后并查出插入数据的主键id
<insert id="abatorgenerated_insert" parameterClass="com.garea.cloud.entities.em.CustOrg"> insert into cust_org (org_id) values (#orgId:BIGINT#) <selectKey keyProperty="orgId" resultClass="java.lang.Long"> <![CDATA[ SELECT LAST_INSERT_ID() AS id ]]> </selectKey> </insert>
*<![CDATA[]>
*case when else end
*DATE_FORMAT(,)
<![CDATA[select ca.id as id,ca.open_id as openId, case when cp.birthday is NULL then NULL else (year(now())-year(cp.birthday)-1) + ( DATE_FORMAT(cp.birthday, '%m%d') <= DATE_FORMAT(NOW(), '%m%d') ) end as age, (SELECT GROUP_CONCAT(beConcerned.person_name) FROM cust_person_relation cor left join cust_person beConcerned on beConcerned.id = cor.be_concerned_id WHERE cor.concerned_id = #accountId:BIGINT#) as beConcerned from cust_account ca left join cust_person cp on cp.id = ca.id left join cust_org co on co.org_code = cp.org_code]]> where ca.id = #accountId:BIGINT#
<select id="selectAllByParams" parameterClass="com.garea.cloud.dto.em.CustPersonSearchDto" resultClass="com.garea.cloud.dto.em.CustPersonAccountOrgDto"> <![CDATA[select ca.id as id,from cust_person cp left join cust_account ca on ca.id = cp.idleft join cust_org co on co.org_code = cp.org_code ]]><dynamic prepend="where"><isNotEmpty prepend="and" property="accountLevel">ca.account_level = #accountLevel:SMALLINT#</isNotEmpty><isNotEmpty prepend="and" property="params">(cp.person_name like CONCAT('%',#params:VARCHAR#,'%') or ca.nick_name like CONCAT('%',#params:VARCHAR#,'%') or cp.mobile_phone like CONCAT('%',#params:VARCHAR#,'%'))</isNotEmpty></dynamic>order by ca.create_time desc </select>
*LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。
*用EXISTS替代IN、用NOT EXISTS替代NOT IN:
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。
例子:
(高效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB') (低效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB')SELECT * FROM (SELECT * FROM cust_area WHERE area_parent IN (SELECT area_code FROM cust_area WHERE area_name = #areaName:VARCHAR#)) a WHERE EXISTS (SELECT 1 FROM cust_store t WHERE (LEFT(t.area_code,4) = LEFT(a.area_code, 4)) AND (t.status = 2 OR t.status = 5))下面链接有这方面的介绍:
http://my.oschina.net/xianggao/blog/87216
0 0
- SQL整理
- SQL整理
- SQL整理
- 整理SQL
- SQL整理
- sql整理
- SQL整理
- SQL整理
- SQL整理
- sql整理
- SQL整理
- SQL整理
- SQL---常用sql整理
- 常见sql整理 常见hive sql整理
- 【SQL】SQL常用函数整理
- 精妙SQL语句整理
- Oracle维护SQL整理
- Oracle 维护SQL整理
- iOS视频播放器的制作
- inner join,left join ,right join
- Android Broadcast 怎么不被其他应用接收
- xcode模拟器的使用
- Linux 中添加传输层协议 MyTCP系列
- sql整理
- Linux下透明代理+Privoxy实现页面相关的广告植入
- JNDI的理解
- android有关词汇
- Linux笔记(42)——sudo权限
- 宏定义与静态变量的区别
- android studio下载、安装 on ubuntu15.10
- pg基于物理日志流复制的主备集群-搭建相关
- OCiOS开发:UIKit 力学(UIDynamics)(一)