我有一种情况,我需要一个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/