以dB2为单位的连接的SQL语句

时间:2014-03-19 11:07:08

标签: sql join db2

以下是我在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

我理解我之所以遇到此错误的一个原因是因为health_tb中可能不存在id,但事实并非如此。我希望有人可以提供建议。谢谢。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果将id列定义为不同类型,则可能会出现问题。