为什么会出现错误=> 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)));
答案 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
子句。