SQL语法(可能与SQL lite相关)

SQL语法(可能与SQL lite相关),sql,sqlite,join,syntax,Sql,Sqlite,Join,Syntax,以下是3个表的联接: 在设备编号上-始终是一个数字,因此只需在两列上连接 在插槽编号上,第一个案例“Logs.Slot”是编号,第二个案例“slotlist2”是逗号分隔的列表 在Slot上-Def_Instances.Slot类似于Logs.Slot(表示它是一个数字,与Logs.Slot相关联),但其偏移量值为+1 现在,我想在使用SQLLite时正确使用以下语法 select Logs.*, Def_Instances.*, (Def_Instances.slot + Def_Insta

以下是3个表的联接:

  • 在设备编号上-始终是一个数字,因此只需在两列上连接

  • 在插槽编号上,第一个案例“Logs.Slot”是编号,第二个案例“slotlist2”是逗号分隔的列表

  • 在Slot上-Def_Instances.Slot类似于Logs.Slot(表示它是一个数字,与Logs.Slot相关联),但其偏移量值为+1

  • 现在,我想在使用SQLLite时正确使用以下语法

    select  Logs.*, Def_Instances.*, (Def_Instances.slot + Def_Instances.Offset + 1) as A from Def_Instances
    inner join Logs ON Logs.Column1 = Def_Instances.DeviceNumber 
    and (', ' || RTRIM(Def_Instances.slotlist2) || ',') LIKE '%, '|| Logs.Slot ||',%' 
    and (', ' || RTRIM(Def_Instances.A) || ',') LIKE '%, '|| Logs.Slot ||',%' 
    
    那人告诉我这是个错误

    当我到处玩的时候。它要么无法识别S+符号,要么无法识别a列,或者就我记忆所及,我之前又遇到了一个错误


    提前感谢

    您不能从
    where
    子句中的
    select
    子句重复使用列别名。别忘了,SQL首先删除行(运行
    where
    子句),然后再投影输出(运行
    select
    子句)

    您必须将表达式放在
    where
    子句中。可能会做一些类型转换,因为它在某一点上看起来是数字,然后你开始把它当作字符串来处理