1

我精通 SQL-Server 和其他形式的 SQL,但我正在努力学习 Oracle SQL。出于某种原因,我什INSERT INTO .. SELECT ..至无法使用最简单的形式,它总是以“ SQL 命令未正确结束”而失败。

这是我当前的示例:

CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99));

INSERT INTO table1
(year, id, dat, categ)
select year, id, dat, categ from table1 where id=5000 and year=2013;

这是它的 SqlFiddle:http ://sqlfiddle.com/#!4/c4d34/1

我似乎无法弄清楚这里出了什么问题。我在 SO 上检查了大约十几个其他相关问题,在 Google 上检查了十多个,但所有答案要么不适用,要么不起作用。我还尝试了上述命令的大约一百万种变体,似乎没有任何效果。

非常感谢任何帮助。


FWIW,我现在认为这只是一个 SQLFiddle 问题,正如许多人所说的那样。

用我的代码向我报告问题的 Oracle 用户当然是在使用完整的 SQL 语句,然后我才将其剥离以尝试隔离问题。 查询有一个完全不同的问题,恰好在 SQLFiddle 中报告了相同的错误。具体来说,它的问题是我使用As的是表别名,这在 Oracle 中显然是无效的(或者可能只是在我编写的查询中)。

无论如何,真诚地感谢所有试图帮助我的人。

4

3 回答 3

4
CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99))
/

INSERT INTO table1
(year, id, dat, categ)
select year, id, dat, categ from table1 where id=5000 and year=2013

这有效,也就是说,如果您将两个语句都粘贴到 SQL fiddle 的左侧(模式)窗口中。我认为 SQL Fiddleinsert..select根本不允许在 SQL 窗口中使用。

于 2014-03-10T17:28:31.813 回答
2

SQL小提琴

CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99))
//

INSERT INTO table1 (year, id, dat, categ)
SELECT year, id, dat, categ 
FROM table1 
WHERE id = 5000 AND year=2013
//
于 2014-03-10T17:17:35.627 回答
2

我不知道你为什么会遇到这个问题,但语法没有问题

我认为这正是您在小提琴上执行查询的方式)

看到这个http://sqlfiddle.com/#!4/38e62/1

于 2014-03-10T17:45:24.370 回答