我正在尝试使此查询正常工作。目的是获得最小日期列表之间的最小日期。
但是我得到了:“ where子句”中的未知列“ di.device_id”
如何使device_id字段在第二个子查询中可见?
update device_information di
set first_seen=(
select min(date) from (
select min(insert_date) date from product_state_change_event where device_id=di.device_id
union select min(insert_date) date from sensor_range_switch_change_event where device_id=di.device_id
) as dates
);
已编辑
实际上,我有19张桌子将它们合并。
最佳答案
我期望这样的查询:
update device_information di join
(select min(insert_date) as minid
from product_state_change_event psce
group by psce.device_id
) psce
on psce.device_id = di.device_id
set first_seen = least(psce.insert_date, psce.minid);
这假定日期从不为
NULL
。可以轻松地将其合并到答案中(通过向least()
添加更多逻辑)。