oracle中defined,Oracle:专栏定义(Oracle: column ambigously defined)

Oracle:专栏定义(Oracle: column ambigously defined)

我收到以下错误。 据我所知,所有列都是由表名定义的,所以我不明白为什么我从Oracle数据库中得到这个错误。

OCIError: ORA-00918: column ambiguously defined: SELECT * FROM (

SELECT raw_sql_.*, rownum raw_rnum_

raw_sql_

WHERE rownum <= 25

)

WHERE raw_rnum_ > 0

I am getting the following error. As far as I can see are all columns defined by table name, so I do not see why I get this error from my Oracle database.

OCIError: ORA-00918: column ambiguously defined: SELECT * FROM (

SELECT raw_sql_.*, rownum raw_rnum_

raw_sql_

WHERE rownum <= 25

)

WHERE raw_rnum_ > 0

原文:https://stackoverflow.com/questions/35706662

更新时间:2020-08-26 18:08

最满意答案

只有抛出红旗的东西,

ORDER BY offsakid desc

您在select中将一个字段别名为该名称:

OFFSAK.id offsakid,

但它可能是您的某个表上的实际字段名称,您应该按基础字段排序 - 而不是别名。

Only thing that throws a red flag, the

ORDER BY offsakid desc

You alias one field to that name in your select:

OFFSAK.id offsakid,

But it could be an actual field name on one of your tables, and you should order by the underlying field - not the alias.

2016-02-29

相关问答

由于你没有回答评论中的问题,我假设amount_paid列来自visitings表,因为student表看起来像维度表。 column ambiguity错误是由两个表中的st_id列引起的。 所以SQL不知道你指的是哪个表的st_id 。 尝试这个。 select avg (v.visit_cost) as average_cost, s.st_fname, s.st_lname

from student s

inner join visitings v on s.st_id=v

...

您在第一个派生表SQL1选择了两次CLG_NUM和ENT_NUM FROM (

select DISTINCT

PRIMARY_MER_NUM ,

PRIMARY_EXT_MID ,

MER_DBA_NAM,

CLG_NUM, --1

ENT_NUM, --1

ENT_NAM,

MER_OPN_DTE,

MER_CLS_DTE,

MER_FST_DPST_DTE,

CLG_NUM, --2

ENT_NUM --2

from bi.t_mer_dim_na

这使得在外部选择中选择sql1

...

我认为这是ANSI风格连接的一个缺陷。 使用DBMS_XPLAN来查找旧数据库中正在过滤哪个表。 或者更好的是,从业务逻辑中找出他们应该查询的内容。 I think this was a bug with the ANSI style join. Use DBMS_XPLAN to find which table was being filtered in the old database. Or better still, work out from the business logic wh

...

正如评论的那样,我认为Hibernate将默认为spatialDialect,它将是可用的第一个,并且在那种情况下它是Oracle,尽管在persistence.xml中指定了什么。 我找到的第一个解决方法是在实体中注释对于GeometryUserType我将使用Postgis方言,如: @TypeDefs({@TypeDef(name="org.hibernatespatial.GeometryUserType",

parameters={@org.hibernate.anno

...

虽然VARCHAR Infomix类型限制为255个字符,但我会使用LVARCHAR类型,限制为32,739字节。 第二个问题是(1024 char) ,这意味着Oracle可以保存1024个字符。 在像UTF-8这样的编码中,这不等于1024字节。 例如波兰语字母:ąęćŃ要保存2个字节,因此带有1024个波兰字母的文本将使用2048个字节。 Informix使用字节长度,因此您必须知道您的编码和数据。 对于UTF8编码的波兰语文本,我将varchar2(1024 char)转换为lvarcha

...

我无法直接使用该功能。 解决方法是使用oracle命令: using (DealerContext objectContext = new DealerContext())

{

string connString = objectContext.Database.Connection.ConnectionString;

using (var conn = new OracleConnection(connString

...

只有抛出红旗的东西, ORDER BY offsakid desc

您在select中将一个字段别名为该名称: OFFSAK.id offsakid,

但它可能是您的某个表上的实际字段名称,您应该按基础字段排序 - 而不是别名。 Only thing that throws a red flag, the ORDER BY offsakid desc

You alias one field to that name in your select: OFFSAK.id offsakid,

...

您无法插入集合 (例如PL / SQL表)。 您可以使用批量收集语法来填充集合: SELECT ColumnA, ColumnB

BULK COLLECT INTO tableVariableA

FROM physicalTable

WHERE [...];

但是,您可能希望检查这是一种合适的方法,因为SQL Server和Oracle有很大不同。 你不能在普通的SQL中使用PL / SQL表( 至少在12c之前 ),甚至在你的程序中也是如此,所以你可能需要一个模式级别的类型而不是PL / SQ

...

正如您已经发现的那样, DATEPART是一个SQL Server功能,而不是Oracle功能。 您已经显示的替代方法to_number(to_char(v_ExpireTime, 'YY'))虽然会给你一个两位数的值,所以如果你的约会的年份部分是1899 ,它将只返回99 ,所以你不会得到一个匹配。 您可以使用四位数年份日期格式YYYY而不是YY 。 另一种选择是使用提取功能 : IF extract(year from v_ExpireTime) = 1899 THEN ...

As you

...

如果您使用的是Oracle 11g2,unpivot和listagg的组合可以提供帮助,请尝试此查询 WITH T(ID, SLOW, MEDIUM, FAST, SUPER_FAST) AS

(SELECT 1, 'Y', 'Y', 'N', 'Y' FROM DUAL

UNION ALL

SELECT 2, 'N','Y','N', 'Y' FROM DUAL

union all

SELECT 3, 'N','N','N', 'Y' FROM

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值