示例1:sql比较复杂
SELECT
if(dom.PLAN_NO is null,
(ifnull( ( SELECT sum( DELIVERY_QTY ) FROM delivery_order_materiel WHERE 1=1 and PO_NO=pom.PO_NO and MATERIEL_CODE = pom.MATERIEL_CODE ), 0 )),
ifnull( ( SELECT sum( DELIVERY_QTY ) FROM delivery_order_materiel WHERE POM_PM_CODE = pom.PM_CODE AND PLAN_NO = dpm.PLAN_NO ), 0 )
)AS tempFiled
from tableName
where 1=1
示例2:
SELECT
if(dom.PLAN_NO=1,
( SELECT sum( DELIVERY_QTY ) FROM delivery_order_materiel WHERE 1=1 and PO_NO=pom.PO_NO and MATERIEL_CODE = pom.MATERIEL_CODE ),
( SELECT sum( DELIVERY_QTY ) FROM delivery_order WHERE 1=1 AND PLAN_NO = dpm.PLAN_NO )
)AS tempFiled
from tableName
where 1=1
update a1 left join a2 on a1.level=a2.lv set a1.level=a1.level+1,a1.exp=0 where a1.exp >=a2.lvexpupdate a1 left join a2 on a1.level=a2.lv set a1.exp=a1.exp+10 where a1.exp <a2.lvexp
mysql之条件语句where和having的区别。当我们需要按条件对查询结果进行筛选,就需要条件语句WHERE和HAVING了。WHERE: 直接对表中的字段进行限定,来筛选结果;
HAVING: 需要跟分组关键字GROUP BY 一起使用,通过对分组字段或分组计算函数进行限定,来筛选结果。
WHERE: 直接对表中的字段进行限定,来筛选结果;
WHERE特点:直接用表的字段对数据集进行筛选,如果涉及到关联查询从其他的表获取需要的信息,执行时也是通过WHERE条件进行筛选,用筛选后的比较小的数据集进行连接。
HAVING: 需要跟分组关键字GROUP BY 一起使用,通过对分组字段或分组计算函数进行限定,来筛选结果。
HAVING特点:首先我们要把所有的信息都准备好,包括从关联表中获取需要的信息,对数据集进行分组,形成一个包含所有需要的信息的数据集合。接着在通过HAVING条件的筛选,得到需要的数据。
1、涉及到关联,如果需要通过连接从关联表中获取需要的数据,WHERE是先筛选后连接,而HAVING是先连接后筛选。
2、在需要对数据进行分组统计的时候,HAVING可以完成WHERE不能完成的任务。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)