例如,有两个表T1和T2:

T1作为,表中唯一的值是‘Prime’、‘Non-Prime’或'All'.如下所示,Shipping_type可以是三个值之一.在本例中,它是‘Prime’.‘all’表示它可以是Prime也可以是Non-Prime.

   shipment_type 
   Prime

和T2为:

order_day   customer_id shipment_type   order_total
2/1/2024    118XXXXXXX  Prime   181.9
1/24/2024   118XXXXXXX  Prime   71.49
1/29/2024   118XXXXXXX  Non-Prime   814.38
1/29/2024   118XXXXXXX  Non-Prime   814.38

我想根据T1表中的值筛选T2表,但如果T1表中的SHIPTING_TYPE为‘ALL’,我不知道如何 Select T2表中的所有值.

我试着像这样筛选表T2,但是这只包括Prime或非Prime结果.如果t1.Shipping_type=‘all’,我希望获得T2表中的所有值

SELECT t1.* FROM 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)

我不认为在Case When中添加第三个条件会有帮助,因为表T2中没有‘all’字段.

感谢并感谢您的回复

推荐答案

没有必要使用CASE条款.只需使用INNER JOIN即可.

条件OR t1.shipment_type = 'All'确保如果t1.Shift_type=‘all’,则检索来自t2的所有记录:

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

Demo here

Mysql相关问答推荐

在mySQL中使用子查询和WHERE子句的JOIN

如何将MySQL与AS&Quot;语法一起用于存储过程返回的表?

一次又一次地删除事件行

MySQL INSERT INSERT ON DIPLICATE KEY UPDATE WITH COMPAY PRIMARY KEY失败

无法删除或更新父行:外键约束无法删除表

Mysql,从两个不同的表中添加原始数据,从第一个表中获取所有内容,仅从第二个表中获取curdate内容

使用Workbench时如何添加mysqldump配置标志

"Shelf服务器容器访问MySQL Docker容器时出现SocketException异常"

特定时间段内每个客户的运行总计

将 AVG 与 HAVING 结合使用

根据单个日期字段获取范围/天数

MySql部分匹配基于部分查询代码

MySQL 每组最大 n 只适用于多行

使用 MySQL 流式传输大型结果集

从 MYSQL 查询中计算列的平均值

MySQL SELECT 增量计数器

按日期和时间降序排序?

在 PHP/MySQL 中将日期时间存储为 UTC

应该使用什么列类型将序列化数据存储在 mysql 数据库中?

AWS RDS 实例升级停机时间