SQLITE在以防万一的列中参考选择列



我有这个sqlite查询:

SELECT CASE WHEN (stops.parent_station IS '') THEN stops.stop_name ELSE (SELECT stops.stop_name FROM stops WHERE stops.stop_id = parent_id) END as stops from stops

这可以正常工作,但是我需要一种方法来从所选停止的父站ID中获取elte语句中的停止名称。因此,基本上我需要一种引用当前行的parent_id

的方法

您可以使用自我加入

SELECT 
    CASE WHEN a.parent_station is '' then a.stop_name else b.stop_name end as stop 
from stop a 
left join stop b on a.stop_id = b.parent_id

您可以尝试使用cocece。联合返回第一个无空价值因为例如coalesce(null, 'a')将返回A,并且coalesce('ab', 'cd')将返回AB。在您的情况下,您必须检查字符串的字符串,在这种情况下,如果有2个参数相同,则可以使用nullif返回null。

Select
    coalesce (NULLIF(s1.parent_station,''), s2.stop_name) as stop 
from stop s1 
   left join stop s2 on s1.stop_id = s2.parent_id

最新更新