我有一种情况,我需要一个MySQL查询,该查询将通过两个条件选择一行。假设我有三列“ ID”,“ QTY”,“ PRICE”。用这种逻辑进行过滤的正确方法是:

 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

最佳答案

假设您有一个查询为

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


你用

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

关于mysql - 选择查询案例,按条件/条件分配两个变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46048179/

10-12 22:38