我在oracle-sql开发人员中使用以下命令,它可以很好地输出数据
SQL> SELECT table1.documentid FROM table1
documentid
==========
001
002
003
当使用以下脚本时
SELECT table1.documentid FROM table1
join table2
on table2.id=table1.documentid ;
输出是
documentid
==========
no rows select
我想知道为什么没有数据输出,我的错误可能是什么原因?
非常感谢的帮助
由于这是两个表的联接,如果table2.id
和table1.documentid
之间存在匹配值,则查询将返回结果。
您说table1.documentid
包含值001、002和003——这意味着table2.id
应该至少包含其中一个值——否则,查询将不会返回任何内容。
事实证明,它确实没有返回任何行,这意味着table2
要么是空的,要么在其id
列中不包含001、002或003。
这就是您目前拥有的:
SQL> select * from table1;
DOC
---
001
002
003
SQL> select * from table2;
no rows selected
SQL> SELECT table1.documentid FROM table1
2 join table2
3 on table2.id=table1.documentid ;
no rows selected
如果切换到外部联接,可以获得结果:
SQL> SELECT table1.documentid FROM table1
2 left join table2
3 on table2.id=table1.documentid ;
DOC
---
001
003
002
SQL>