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

时间:2017-04-26 14:26:30

标签: sql sqlite join syntax

以下是3表的加入:

  1. 在设备编号上 - 始终是一个数字,只需加入2列

  2. 关于插槽号码 - 第一个案例" Logs.Slot"是数字,第2和#34; slotlist2"是逗号分隔的列表。

  3. 在Slot上--Def_Instances.slot就像Logs.Slot(意思是它的一个数字并且被Logs.Slot所引用)但是从它减去了Offset +1的值。

  4. 现在,我想在使用SQL lite

    时获得以下语法
    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 ||',%' 
    

    那个人告诉我htere是一个错误。

    当我在玩耍的时候。它或者不识别+符号或A列,或者据我记得还有一个我之前收到的错误。

    提前致谢

1 个答案:

答案 0 :(得分:0)

您无法从select子句中的where子句重用列别名。不要忘记,SQL首先在输出(运行where子句)之前删除行(运行select子句)。

您必须将表达式放在where子句中。并且可能会进行一些类型转换,因为它在某一点似乎是数字,然后你开始像字符串一样处理它。