【问题标题】:Column or global variable not found db2未找到 db2 列或全局变量
【发布时间】:2021-12-10 23:41:21
【问题描述】:

我对 DB2 有疑问。

我有两个具有相同结构数据库的库。唯一的区别是数据。

当我尝试对第一个库执行此 sql 请求时,它可以正常工作

SELECT *
FROM Z24FR.CLIENT, Z24FR.EMPLOYE
WHERE CLIENT.CLINUM = EMPLOYE.CLINUM

但是当我尝试使用其他库时,我遇到了这个错误。

SELECT *
FROM Z24UK.CLIENT, Z24UK.EMPLOYE
WHERE CLIENT.CLINUM = EMPLOYE.CLINUM
Column or global variable CLINUM not found.
CLINUM was not found as a column of table *N in *N and was not found as a global variable in *N. If the table is *N, CLINUM is not a column of any table or view that can be referenced. 

我检查了 CLIENT 和 EMPLOYE 表,它们有包含数据的列。

提前感谢您的回答

【问题讨论】:

  • 嗯... DB2 不同意你的观点。您可以使用另一个可视化工具访问Z24UK.CLIENTZ24UK.EMPLOYE 表,以检查它们实际上都有CLINUM 列吗?
  • 我很惊讶第一个没有以同样的方式失败,如果你在FROM 子句中使用它的模式来限定一个表,那么你必须为列使用 3 部分限定名称,比如@ 987654329@,这是选择运行的有效查询吗? see
  • @TheImpaler 我使用 DBeaver,它们实际上都有 CLINUM 列
  • 我会分别尝试这些表格:1) select CLIENT.CLINUM from Z24UK.CLIENT; 和 2) select EMPLOYE.CLINUM from Z24UK.EMPLOYE。你从这些查询中得到了什么?
  • @nfgl 好吧,当我尝试这个SELECT * FROM Z24UK.CLIENT a, Z24UK.EMPLOYE b WHERE a.CLINUM = b.CLINUM 时,会使用“表指示符”,它的工作原理!谢谢你

标签: sql database db2 ibm-midrange db2-400


【解决方案1】:

限定列的方式取决于“声明”表的方式

Table designators

所以如果你想要一些共同的东西,你可以编码

SELECT *
FROM Z24xx.CLIENT CLIENT, Z24xx.EMPLOYE EMPLOYE
WHERE CLIENT.CLINUM = EMPLOYE.CLINUM

或者因为逗号符号太旧并且不可读

SELECT
  *
FROM Z24xx.CLIENT CLIENT
  inner join Z24xx.EMPLOYE EMPLOYE on CLIENT.CLINUM = EMPLOYE.CLINUM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2017-11-08
    相关资源
    最近更新 更多