【问题标题】:SQL statement for a join in dB2用于连接 dB2 的 SQL 语句
【发布时间】:2014-03-19 11:07:07
【问题描述】:

以下是我在 dB2 中加入的 sql 语句。

select name, address, bloodgroup
from user_tb, health_tb
where user_tb.id = health_tb.id;

我收到以下错误:

“health_tb.id”在使用它的上下文中无效。 SQLCODE=-206, SQLSTATE=42703, DRIVER=4.12.79

我知道我收到此错误的一个原因是 id 可能不存在于 health_tb 中,但事实并非如此。我希望有人可以建议。谢谢。

【问题讨论】:

  • 大家好,感谢您的回复。我设法找到了问题。 sql语句中的表名之一拼写错误。

标签: sql join db2


【解决方案1】:

首先,您应该学习使用现代连接语法,尽管这与您的问题无关:

select name, address, bloodgroup
from user_tb join
     health_tb
     on user_tb.id = health_tb.id;

在 Google 上进行的简单搜索将我指向 documentation 以查找此错误。它提到的第一件事是:

此错误的可能原因包括:

指定的列不是任何源或目标的列 语句的表或视图。

  • 在 SELECT 或 DELETE 语句中,指定的列不是 FROM 中标识的任何表或视图的列 语句中的子句。
  • SQL 数据更改语句的列列表指定了该语句的目标表或视图的列名。

我怀疑id 列确实被称为user_id。工作查询可能如下所示:

select name, address, bloodgroup
from user_tb join
     health_tb
     on user_tb.id = health_tb.user_id;

【讨论】:

    【解决方案2】:

    1) 检查两个表中的id列是否具有相同的数据类型 2)检查列名中是否有任何尾随空格

    select '<' || column_name || '>'  from user_tab_columns
    where tbname = 'health_tb'
    

    【讨论】:

      【解决方案3】:

      如果id 列被定义为不同的类型,这可能是个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-09
        • 1970-01-01
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多