mysql 多层子查询怎么获取最外层的别名引用 10C

mysql 多层子查询怎么获取最外层的别名引用,
引用了后报错:Unknown column 'user.username' in 'where clause'
图片说明

7个回答

楼主 最后怎么解决的 我也遇到了

不是不能用别名,这么给你说吧执行顺序导致了执行where条件的时候还没有别名,所以数据库编译器不认识

justinytsoft
justinytsoft 回复god-成: 不是作用域吧,如果我只写一个子查询是可以的
3 年多之前 回复
qq_20544709
Otaku love travel 不知道你懂不懂变量的作用域?这个类似。编译器先编译括号里面的内容了,那个时候还没有suer。解决方法的话。我就不知道了,因为我也不太会写sql。不好意思了,你这个还是有点复杂的
3 年多之前 回复

子查询是从最里面一层开始,你的where条件是在查询user之前创建的,这个sql的执行顺序不知道你清不清楚,是先执行where里面的那个select,然后再执行外面的select

justinytsoft
justinytsoft 那为什么我只写一个子查询的时候能获取到呢
3 年多之前 回复
 Unknown column 'user.username' in 'where clause'
这个错误也可能是你user表中没有username这个字段,注意大小写看看。
如果的确有的话(可能性很大,因为这样写语句的确是错误的)
其实我看了你的代码 你这一段temp毫无必要,你直接把from里面的值拿出来。把uc.xx as xx 改成GROUP_CONCAT(uc.xx)就行了
也不是说嵌套子查询就不能访问了:
select * from t_patroler xxx
WHERE
EXISTS(select * from t_patroler where EXISTS
(select * from t_patroler where xxx.id is not null))
像这样的语句就不会报错。我觉得你这个错了的原因是你把子查询做为一个表了
像这样的语句是肯定会报错的
select * from t_patroler xxx,
(select * from t_patroler where xxx.id is not null) xx
回头想想,我们一般习惯写成
select * from t_patroler xxx,
(select * from t_patroler ) xx
where xxx.id is not null
把这个条件放到where里面去,而不是直接放到子查询里面
所以我觉得你可以改成('%',select sysuserid, ... from (...) temp where temp.sysuserid = username,'%')
然后把那个条件去掉。不过前面已经说了,你这样写其实写麻烦了。这里不需要from temp
miaoch
miaoch 个人感觉 使用子查询做临时表中的语句是可以直接查出来的,就是说你单独选中这一块是可以直接执行的,如果不能,就报你刚才这个错误。只是个人感觉,没有证明。
3 年多之前 回复

最后一句话说错了、因为你是截图,我没办法复制,所以写起来有点麻烦

所以我觉得你可以改成('%',select ... from (select sysuserid, ...) temp where temp.sysuserid = username,'%')
然后把那个条件去掉。不过前面已经说了,你这样写其实写麻烦了。这里不需要from temp

之所以要写temp子查询是因为我要排序,还有所有的字段都是存在的。我就想问问,为什么在temp子查询里引用不到外部的user别名

justinytsoft
justinytsoft 排序已经解决了,可以在group_concat里进行排序
3 年多之前 回复

占楼求助,楼主勿怪。谢谢!(mysql eclipse jsp)
我在数据库建了一个成绩表,然后成绩是用的decimal(5,2)存储的
,然后我在进行sql语句更新的时候懵逼了。我用PreparedStatement对象更新。然后我那个变量是double类型的。执行就报错了,就是把double类型的给予decimal类型错误,但是数据还是更新出来了。
请问怎样才能解决这个问题(或者说不让eclipse报错,因为数据确实能更新)。
pStmt.set...(,)我找不到装换为decimal类型的。求助

qq_38584967
jianhaojiang 抱歉,错误已经解决了,decimal是可以接受double类型的。报错不是因为这个。我在更新后的重定向去的页面我忘了传值了。实在是马虎
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐