Mysql:使用变量中的case设置变量

时间:2012-05-18 16:15:46

标签: mysql

我所拥有的是一个位列NonMileage,并且基于该位列,我想创建一个我可以在where子句中使用的变量。

这是一个两部分问题:

  1. 您如何处理变量?下面的代码并不适用 @NoMileageListing
  2. 然后我将@MileListingClause设置为字符串,我可以 只需使用@MileListingClause,如@MileListingClause?
  3. SET @NoMileageListing = (SELECT NonMileage FROM tbldealerships);
    SELECT 
        @NoMileageListing CASE @NoMileageListing when 1 then 
            SET @MileListingClause = 'tblcargarage.miles >= 0' else 
            SET @MileListingClause = 'tblcargarage.miles != 0' end case;
    

    这是答案

    SET @NoMileageListing = (SELECT NonMileage FROM tbldealerships);
    
    SELECT CASE @NoMileageListing
              WHEN 1 THEN 'tblcargarage.miles >= 0'
              ELSE 'tblcargarage.miles != 0'
           END
      INTO @NoMileWhereClause;
      select @NoMileWhereClause;
    

    在这里找到: Mysql Storing a variable with the result of an SELECT CASE

1 个答案:

答案 0 :(得分:1)

我认为问题出在时间部分。 它应该是:

SELECT CASE @NoMileageListing
WHEN @NoMileageListing = 1 THEN 'tblcargarage.miles >= 0'
ELSE 'tblcargarage.miles != 0'
END
INTO @NoMileWhereClause;
select @NoMileWhereClause;

使用@noMileWhereClause创建动态查询请参考以下答案: How To have Dynamic SQL in MySQL Stored Procedure