帆软SQL报异常:多表连接的时候出现错误:未明确定义列
我刚开始的代码:
select
dm_veh_jdcgz_mx.DAY_ID ,--日期
dm_veh_jdcgz_mx.GLBM ,--管理部门ID
dm_veh_jdcgz_mx.SFZMHM ,--身份证号码
dm_veh_jdcgz_mx.DSRXM ,--姓名
dm_veh_jdcgz_mx.GZTS,--备注 dim_bas_gzzl.GZZL_MC ,--管理部门名称 dim_bas_glbm.GLBMMC ,--管理部门名称
dim_bas_glbm.DLBMMC,--大队名称
dim_bas_glbm.XLBMMC --联系地址
from
dm_veh_jdcgz_mx
left join dim_bas_gzzl
on
dim_bas_gzzl.GZZL= dm_veh_jdcgz_mx.GZZL
left join dim_bas_glbm
on
dim_bas_glbm.GLBM = dm_veh_jdcgz_mx.GLBM
where 1=1 ${if(len(GLBM)==0,"","and GLBM in('"+GLBM+"')")}
AND
DAY_ID>=replace('${startTime}','-','')
AND
DAY_ID<=replace('${endTime}','-','')
百度了好久,总算找到原因。
原文链接:https://blog.csdn.net/wxdsdtc831/article/details/7432774
原文内容:
在查询语句中,经常会出现一个错误:
SQL基础:ORA-00918:未明确定义列的错误。
当前遇到有两种情况。原因为:当查询语句中,查询的表(数据集)中有相同的字段名,查询字段无法确认是改查那个字段
时,就会报未明确定义列的错误。
第一种情况:
1.单表时:
比如fconsign表中存在三个字段:fcsg_consign_id,fcsg_consign_type,fcsg_consign_status
SELECT FCSG_CONSIGN_ID FROM (SELECT FCSG_CONSIGN_ID,FCSG_CONSIGN_TYPE,FC.* FROM FCONSIGN FC) T
这个SQL语句就会报错,因为在T中FCSG_CONSIGN_ID有两个字段,导致DBMS无法确定要查询的哪个列
SELECT FCSG_CONSIGN_STATUS FROM (SELECT FCSG_CONSIGN_ID,FCSG_CONSIGN_TYPE,FC.* FROM FCONSIGN FC) T
这样就不会报错了,T中FCSG_CONSIGN_STATUS只有一个,这样就不会报错了。
总而言之:在嵌套查询中,外查询的字段在子查询中只能出现一个,否则则无法确定是要查哪个字段。就会报 未明确定义列的错误。
2.多表联合查询
比如表A,B中都有a字段。
select a from A,B 这样就要报错。因为也是无法确定查
哪一列。需要明确定义A.a活着B.a (如果在from语句后面为表取了别名,比如 select s_no,s_name,s_score,s.class_no,class_name from student s join class c on (s.class_no = c.class_no)的时候, 则 select语句中那个被多张表都拥有的相同字段名也需要用别名标识 如:s.class_no.)
后来我看自己的SQL,select的时候已经明确列名属于哪张表了,看了好久,总算找到原因所在了。
如下图:在 if 中也要指明该字段属于哪张表中。

帆软SQL报异常:多表连接的时候出现错误:未明确定义列的更多相关文章
- Oozie调度报错——ORA-00918:未明确定义列
Oozie在执行sqoop的时候报错,同样的SQL在sqoop中可用,在oozie中不可用: Caused by: java.sql.SQLSyntaxErrorException: ORA-0091 ...
- 读《程序员的SQL金典》[3]--表连接、子查询
一.表连接-JOIN 1. 自连接实例 查询类型相同的订单信息. SELECT O1 .*,O2.* FROM T_Order O1 JOIN T_Order O2 ON O1 .FTypeId= O ...
- SQL Server三种表连接原理
在SQL Server数据库中,查询优化器在处理表连接时,通常会使用一下三种连接方式: 嵌套循环连接(Nested Loop Join) 合并连接 (Merge Join) Hash连接 (Hash ...
- SQL视图和多表连接
本篇博客关注的焦点是视图的使用以及视图和多表连接的配合.以便可以了解视图,以及更好的使用视图. 首先,还是要说明一下视图的定义:视图是基于SQL语句的结果集的可视化虚拟表,换句话说视图就是SQL查询结 ...
- SQL Server中多表连接时驱动顺序对性能的影响
本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- SQl Server 数据库多表连接
[缘由] 为了防止数据的冗余,我们会将数据库中表进行拆分,这样就产生了多张表,表与表之间通过主外键关联,但这样又造成了我们查找和修改的困难,如何进行多表之间的查找呢? 我们将一个查询同时设计两个或两个 ...
- MyBaties异常之 ORA-00918: 未明确定义列
原因: 如果a表与b表连接,且a与b中存在两个相同的字段,则必须指明字段是哪个表的 箭头所致位置没有指定ROOM_ID为那个表的,应修改为t1.ROOM_ID
- sql server 实现多表连接查询
项目中要实现多表查询,用外连接实现. a表 a(aid,aname) 其中aid为pk b表 b(aid,bname,aid) 其中 bid为pk,aid为fk c表 c(cid,cname,aid) ...
- SQL Server 2012 - 多表连接查询
-- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ...
随机推荐
- SQL点点滴滴_DELETE小计
惨痛的教训: 某次在执行delete时,一时疏忽忘记写where条件了, 1.删除tb_mobile_cust_micromsg中的内容,前提是c_customer这个字段的值与#datamod表中c ...
- 在Server2012R2上导入Server2008R2的HyperV虚拟机
Importing Windows 2008 R2 Hyper-V VM Into Windows 8.1 For the purposes of this post, let’s try and i ...
- 数据库建模工具 PD的使用
1.1. 数据库建模工具 PD的使用 安装12.5版本,进行破解 PD 是最专业数据建模工具, 是 Sybase 公司一个 产品 PD 提供四种模型文件 PDM 物理数据模型,面向数据库表结构设计,直 ...
- Stage划分和Task最佳位置算法源码彻底解密
本课主题 Job Stage 划分算法解密 Task 最佳位置算法实现解密 引言 作业调度的划分算法以及 Task 的最佳计算位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心 ...
- 【深入理解JAVA虚拟机】第一部分.走进Java
Java技术体系 如果仅从传统意义上来看,Sun官方所定义的Java技术体系包括以下几个组成部分:Java程序设计语言各种硬件平台上的Java虚拟机Class文件格式Java API类库来自商业机构和 ...
- GO语言(八) defer注意点
package main import ( "net" "os" "fmt" "io/ioutil" ) func Cl ...
- windows下libevent的编译及使用
之前简单分析了libevent的源码,过了一段时间要用的时候发现完全忘记了..从头记录一下流程 1.编译 可以从github下载libevent的压缩包,解压后 修改以下三个文件,添加宏定义: 在以下 ...
- 使用jmeter使用Jenkins发送自定义消息内容
Jenkins运行成功后,需要发送消息给用户,自己封装了一个rtx的方法,进行发送,配置方法如下: 1.在windows下选择 execute windows batch command,执行我的py ...
- 在Go语言中记录log:seelog包
前两周调bug调的吐血,虽然解决了但是还是挺浪费时间的.跟同事聊了聊,觉得我们现在项目中的日志记录太少了,导致出了问题不知道怎么下手,还得自己改代码记录日志,然后排查问题.这样如果将来还有bug的话还 ...
- redis 哈希数据类型简单操作(实现购物车案例)
这里不累赘如何安装redis和php redis扩展,主要熟悉调用redis哈希数据类型 简单方法操作如下 1:hSet 2:hGet 4:hDel 5:hGetAll 4:hExists 5:hI ...