注册

错误代码:-2127,在USING子句的列部分或Natural连接中使用的列不能有限定词

eden 2023/01/18 860 1 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8_20221128
【操作系统】:centos7.5
【CPU】:
【问题描述】:sys_user表和busi_users表都有一个uid字段外键关联,执行sql
select r.
from sys_user r left join busi_users s using (uid)
当使用using时, 查出结果中uid字段不会被查出来
image.png
并且如果强制查询uid字段, 就会报-2127错误
image.png
自己测试下来发现,如果不使用using, 而是使用on时,查询正常,能查出uid字段
select r.* from sys_user r left join busi_users s on (r.uid=s.uid)
image.png
如果查询语句直接使用全字段查询时,就算使用using也是可以查出uid字段,只不过只查出一个uid,并不会像mysql出现2个uid,因为每个表都有uid
image.png
这个是个bug, 还是有特殊原因?
希望能说明一下具体原因,这个涉及到类似sql到底怎么写的问题了.

补充,发现如果查询s表的全字段就能查出uid
image.png
因为uid是s的主键, 是r的外键,所以达梦就把uid归类到s表内,是么?
但是这样其实还是一个bug,使用using会出现这样的问题,从sql语句中根本看不出问题,太容易对业务造成bug了.

回答 0
暂无回答
扫一扫
联系客服