过滤器中的 CASE WHEN 语句

问题描述 投票:0回答:1

例如有两个表t1和t2:

t1 因为,表中唯一的值是“Prime”、“Non-Prime”或“All”。所以就像下面这样,shipment_type 可以是三个值之一。在此示例中为“Prime”。 “全部”意味着它可以是 Prime 或非 Prime。

shipment_type Prime
 和 t2 为:

shipment_type Prime Non-Prime
我想根据 t1 表中的值过滤表 t2,但如果表 t1 中的 payment_type 为“全部”,我不知道如何选择 t2 表中的所有值。

我尝试像这样过滤表 t2,但这仅包括 Prime 或 Non-Prime 结果。如果 t1.shipment_type = 'All',我想获取 t2 表中的所有值

WHERE t2.shipment_type = (SELECT CASE WHEN t1.shipment_type = 'Prime' THEN 'Prime' WHEN t1.shipment_type = 'Non-Prime' THEN 'Non-Prime' END AS customer_type FROM t1)
我认为添加第三个条件以防万一会有帮助,因为表 t2 中没有“全部”字段。

感谢并赞赏您的回复

sql mysql case
1个回答
0
投票
这可以使用

INNER JOIN

 来完成,如下所示:

SELECT t2.* FROM t2 INNER JOIN t1 ON t1.shipment_type = t2.shipment_type OR t1.shipment_type = 'All';

演示在这里

© www.soinside.com 2019 - 2024. All rights reserved.