我有两个表'trip_history'和'dap_iot_stdd_details'。trip_history
表有trip_id
列,而dap_iot_stdd_details
表有trip_id, dap_iot_stdd_id, added_on, "timestamp"
。
我只想使用trip_history表中的trip_id从dap_iot_stdd_details中提取数据。
我试图执行这个
select dap_iot_stdd_id, added_on, "timestamp"
from public.dap_iot_stdd_details
where dap_iot_trip_id = (
select trip_id
from public.trip_history
where start_time between '1680307200000' and '1680912000000'
order by start_time asc
);
我得到了Error "more than one row returned by a subquery used as an expression"
,正如预期的那样。
我想知道是否有更好的方法来重新创建此查询。
请注意,有超过700k的trip id,需要从dap_iot_stdd_details中获取相应的数据。我是Postgresql的初学者。如果我做错了什么,请告诉我。
1条答案
按热度按时间wydwbb8l1#
您会收到错误,原因如下:
此上下文中的子查询(
select trip_id ..
)只能返回一个有效值。正如@Bergi提到的,你可以将Subquery expression改为:
阅读链接中的文档以了解注意事项。
或者你也可以将查询转换为
JOIN
形式,如建议的: