Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中编写连接条件?_Sql_Oracle_Create Table - Fatal编程技术网

如何在sql中编写连接条件?

如何在sql中编写连接条件?,sql,oracle,create-table,Sql,Oracle,Create Table,我正在尝试连接我的两个表并创建一个新表。这两个现有的表类似于:NSFABSTRACTS(FILEID,WORD)和CLASS(WORD,ORG)。我正在尝试生成一个新表new(FILEID、WORD、ORG)。下面是我的代码,但它给了我一个错误消息 CREATE TABLE TEMP(FILEID, WORD, ORG) AS SELECT NSFABSTRACTS.WORD, NSFABSTRACTS.FILEID, CLASS.ORG FROM NSFABSTRACTS JOIN C

我正在尝试连接我的两个表并创建一个新表。这两个现有的表类似于:NSFABSTRACTS(FILEID,WORD)和CLASS(WORD,ORG)。我正在尝试生成一个新表new(FILEID、WORD、ORG)。下面是我的代码,但它给了我一个错误消息

CREATE TABLE TEMP(FILEID, WORD, ORG) AS
  SELECT NSFABSTRACTS.WORD, NSFABSTRACTS.FILEID, CLASS.ORG
  FROM NSFABSTRACTS JOIN CLASS
  WHERE NSFABSTRACTS.WORD=CLASS.WORD;
错误:
错误报告:
SQL错误:ORA-00905:缺少关键字
90500000-“缺少关键字”
*原因:
*操作:

我还尝试在select语句的顶部添加意合,但也不起作用。谢谢。

您需要使用“on”和“join”:

人们有时使用隐式连接语法,例如

CREATE TABLE TEMP(FILEID, WORD, ORG) AS
  SELECT NSFABSTRACTS.WORD, NSFABSTRACTS.FILEID, CLASS.ORG
  FROM NSFABSTRACTS, CLASS 
  WHERE NSFABSTRACTS.WORD=CLASS.WORD

但这不建议用于现代SQL。这两种形式有点混淆。

使用
JOIN
时,需要在
上使用
指定连接条件,而不是在WHERE子句中。JOIN可以通过两种方式生成:1。您可以在from子句中使用表名,在表名之间使用逗号,在where子句中使用相等条件,例如:从NSFABSTRACTS中选择NSFABSTRACTS.WORD、NSFABSTRACTS.FILEID、CLASS.ORG、CLASS where NSFABSTRACTS.WORD=CLASS.WORD;2.或者通过在from子句中使用“join”关键字,例如:从NSFABSTRACTS上的NSFABSTRACTS join类中选择NSFABSTRACTS.WORD、NSFABSTRACTS.FILEID、CLASS.ORG;
CREATE TABLE TEMP(FILEID, WORD, ORG) AS
  SELECT NSFABSTRACTS.WORD, NSFABSTRACTS.FILEID, CLASS.ORG
  FROM NSFABSTRACTS, CLASS 
  WHERE NSFABSTRACTS.WORD=CLASS.WORD