首页 > 解决方案 > 为什么由于单独运行时有记录的子查询,我没有得到任何行

问题描述

我正在尝试将记录获取到在子查询中找到的外部查询查找记录。

select * from booker.d_air_shipments_na where 
(fulfillment_shipment_id||package_id) in 
(select fulfillment_shipment_id||package_id
from booker.d_air_shipments_na 
where datediff(day, customer_order_date,ext_dea_day)<=1 
and customer_order_date>=current_Date -7)--
and substring(zone,1,1) like 'K'
and substring(zone,9,1) like 'K');

select fulfillment_shipment_id||package_id, substring(zone,1,1), substring(zone,9,1) from booker.d_air_shipments_na limit 100;

当我运行较低的查询时,我确实得到了类似的输出

Column     Substring   Substring
XYZABC     K           K

我想要代码的外部查询中的所有具有上述条件的记录,但我无法

对于在子查询中找到的所有fulfillment_shipment_id||package_id 的整个查询,总体结果应如下所示。所附图片是底部较小查询的所有记录。由于在第 2 列和第 3 列中都有 K 的记录,因此我试图仅获取这些记录以进行外部查询

Fulfillment_shipment_id||package_id column1 column2 column3

标签: sqlamazon-redshift

解决方案


这与

select * 
from booker.d_air_shipments_na
where datediff(day, customer_order_date,ext_dea_day)<=1 
and customer_order_date>=current_date-7
and substring(zone,1,1) = 'K'
and substring(zone,9,1) = 'K';

我认为您在这里不需要子查询,因为您试图在那里过滤同一个表

至于为什么您在较低的查询中获取数据而不在较高的查询中获取数据,似乎您没有符合此条件的记录:

where datediff(day, customer_order_date,ext_dea_day)<=1 
and customer_order_date>=current_Date -7

也有“K”区子串


推荐阅读