2017-09-05 55 views
0

我有一种情况,我需要一个MySQL查询,它将按照两个条件选择一行。假设我有三列'ID','QTY','价格'。这将成为这样的逻辑来筛选正确的方法:选择查询大小写,按条件/条件分配两个变量

IF MIN(QTY) = 0, THEN MIN QTY AS qty //(*and any 'PRICE' value*)//, 
ELSE SELECT MAX(PRICE) AS prc //(*and any 'QTY' value*)//. 

我发现,“CASE WHEN”做几乎正是我需要的,但我走近的问题是,在这样的声明只有一个变量可以是定义。 如果可以按照上面的逻辑进行重新设计,下面的说明会很棒。

CASE WHEN MIN(QTY) = 0 THEN MIN(QTY) ELSE MAX(QTY) END AS qty 
+0

你不能定义两个变量通过使用任何控制功能在select子句中[plz check this](htt PS://stackoverflow.com/questions/23001886/alias-column-name-in-mutiple-case-statement) – Sam

回答

0

假设你有一个查询作为

SELECT MIN(QTY), MAX(QTY) , MAX(PRICE) 
from my_table 

您CON使用

SELECT MIN(QTY), MAX(QTY) , MAX(PRICE), 
    case when MIN(QTY) = 0 THEN MIN(QTY) ELSE MAX(PRICE) END prc 
from my_table 

或避免中间列

SELECT case when MIN(QTY) = 0 THEN MIN(QTY) ELSE MAX(PRICE) END prc 
from my_table