mysql根据条件执行sql

mysql根据条件执行sql,第1张

在项目开发中,我们常常会用到根据不同条件,执行不同的sql,在mysql中可以用 IF(expr1,expr2,expr3) 来满足这个需求。下面我给大家一个示例:

示例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.lvexp

update 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不能完成的任务。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8607035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存