我有一种情况,我需要一个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
答案 0 :(得分:0)
假设您有一个查询
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