MySQL连接中的相关查询

时间:2014-12-13 21:15:12

标签: mysql sql

为什么会出现错误=> uknown column devgeo.id在整个查询的一部分?下方。

' select devgeo.id from device_geolocation devgeo inner join (select concat(''received_posts_'', cast(devgeo.id as char))) rcv_posts on(devgeo.id=rcv_posts.id)',

另外,为什么在@a=devgeo.id中设置@a并使用cast(@a as char)会产生where中没有列的错误?下方。

rcv_posts.post_id != ', cast(post_id as char),

首先,我指望每个子查询都可以访问其父查询别名。 其次,正如我在使用where运算符在exists子句中实现整个查询的第一部分时所遇到的那样,但是存在相同的错误 - unknown column devgeo.id。使用用户变量后出现错误 - unknown column - 但对于exists运算符中的连接表名称。

@for Gordon

set @q = (select concat('insert into ', created_table_name, 
                            ' select @a=devgeo.id from device_geolocation devgeo inner join (select concat(''received_posts_'', cast(@a as char))) rcv_posts on(devgeo.id=rcv_posts.id)',
                            ' where devgeo.id != ', cast(deviceid as char),  
                            ' and devgeo.id != ', cast(post_device_id as char), 
                            ' and rcv_posts.post_id != ', cast(post_id as char),                                    
                            ' limit ', cast(x as char)));

1 个答案:

答案 0 :(得分:0)

这是您查询的重要部分:

select @a=devgeo.id
from device_geolocation devgeo inner join
      (select concat(''received_posts_'', cast(@a as char))
      ) rcv_posts
      on(devgeo.id=rcv_posts.id)',
                        ' 

没有意义。未定义列rcv_posts.id,因此无论子查询中的内容如何,​​on子句都将失败。也许你的意图是:

select @a = devgeo.id
from device_geolocation devgeo cross join
      (select concat(''received_posts_'', cast(@a as char)) as var
      )

或许,您可能打算在子查询中使用from子句。