mysql根据条件执行sql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql根据条件执行sql相关的知识,希望对你有一定的参考价值。

参考技术A 在项目开发中,我们常常会用到根据不同条件,执行不同的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

sql 存储过程 - 根据条件执行不同的SQL语句

CREATE PROC [dbo].[GetUserByCondition]
        @username varchar(100),
        @orderfield  varchar(100)
     
         AS
                BEGIN
                    DECLARE @sqlfilter  VARCHAR(max)
                    SET @sqlfilter = 'select * from hrmresource where 1=1 '
                    IF(@username is not null)
                              SET @sqlfilter = @sqlfilter + '   and lastname like  ''%' +@username+ '%'' '
                    IF(@orderfield is not null)
                              SET @sqlfilter =  @sqlfilter +  '  order  by ' + @orderfield + ' desc' 
            
                            PRINT ( @sqlfilter)
                            EXEC (@sqlfilter)

                END
GO

exec GetUserByCondition '杨','workcode'

以上是关于mysql根据条件执行sql的主要内容,如果未能解决你的问题,请参考以下文章

mysql中sql语句查询的同时根据条件将数据插入到另一个表的做法?

SQL根据条件执行不同的语句

根据条件在 Spark SQL 或 MySQL 中生成新列

sql 存储过程 - 根据条件执行不同的SQL语句

mysql的关键词执行顺序

sqlwhere后可以有多个条件后再嵌套吗