SQL Lite中的条件列联接

问题描述

就像下面的网页一样,我想在sql lite中进行条件列连接

https://dev.to/gschro/conditional-column-join-in-sql-5g03

但是看来这是不可能的?

这是我的加入:

left join query_506556 as rdi_data on rdi_data.time = y.datetime_weather AND case when a.monitor_id is null then 1 when a.monitor_id = rdi_data.device_id then 1 else 0

我想加入两件事,y表中的datetime(可以)和表中的monitor_id(不一定代表)。而且我想确保当rdi_data中的数据不代表时,它也会被复制

错误代码

Error running query: near "order": Syntax error

sql lite中可以进行这种联接吗?

解决方法

这是您想要的吗?

left join query_506556 as rdi_data 
    on  rdi_data.time = y.datetime_weather 
    and (a.monitor_id is null or a.monitor_id = rdi_data.device_id)

或者,如果您也想匹配null的值(但看起来并不符合您的要求),那么请使用is,它是SQLite中的空安全运算符:

left join query_506556 as rdi_data 
    on  rdi_data.time = y.datetime_weather 
    and a.monitor_id is rdi_data.device_id