【问题标题】:Oracle UNION different columnsOracle UNION 不同的列
【发布时间】:2014-09-19 13:52:37
【问题描述】:

我有两张表看起来像:

TABLE_1
COL_A (int), COL_B (float), COL_C (float)


TABLE_2
COL_A (int), COL_B (float)

我的查询使用 UNION 将这些表的结果放在一起,但在 TABLE_2 没有 COL_C 的情况下,我希望放置类似“0”的内容。 但我只是得到一个 'ORA-00918: column ambiguously defined' 错误

我怎样才能解决这个问题?

【问题讨论】:

  • 你能发布你的 SQL 查询吗?

标签: oracle ora-00918


【解决方案1】:

你可以试试这个

SELECT COL_A, COL_B, COL_C FROM Table1
UNION
SELECT COL_A, COL_B, 0 As COL_C FROM Table2

【讨论】:

  • 感谢,AS COL 对其进行排序,并为它们提供相同的列名。
  • 这个答案真的可以接受。但@jramesh1967 的另一个回答毫无意义。
【解决方案2】:
SELECT COL_A,COL_B,COL_C FROM TABLE_1
UNION
SELECT COL_A,COL_B,'0' AS COL_C FROM TABLE_2

你也可以逃过一劫

SELECT COL_A,COL_B,COL_C FROM TABLE_1
UNION
SELECT COL_A,COL_B,'0' FROM TABLE_2

基本思想是两者必须具有相同数量的相同对应数据类型的列。

【讨论】:

  • 感谢,AS COL 对其进行排序,并为它们提供相同的列名。
  • @jramesh1967, COL_CFLOATNOT 字符串。那么为什么NUMBER 0 周围有单引号?
  • @KPS-UK,当这个答案违背了帮助你的目的时,你为什么要贸然下结论?也没有应用代码标签,这是一种不专业的回答问题的方式。
  • 为什么你会对不影响你的事情如此沮丧?我没有妄下结论,答案并没有破坏它的目的。 0 AS COL_C 解决了我的问题。为什么不提供更“专业”的答案?
  • 我只是想帮助您了解0 as a number'0' as a literal 不同。它只会破坏性能,因为优化器必须使用implicit conversion。如果您对答案没问题,我没有问题,但我真诚的目的是让您了解所发布的两个答案之间的区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多