标签: sql-insert

PHP oci_execute 用于多条语句

我试图在一次oci_execute()PHP 调用中发出多个 INSERT 语句。问题是我收到此错误:

ORA-00911: invalid character
Run Code Online (Sandbox Code Playgroud)

我猜这是;在每个语句之后。

所以现在,我的问题是我如何制作多个可以在其中工作的 INSERT 语句oci_execute()

到目前为止,这是我的查询:

INSERT INTO tbl (id, name) VALUES(1, 'John');
INSERT INTO tbl (id, name) VALUES(2, 'Martha');
INSERT INTO tbl (id, name) VALUES(3, 'Richard')
Run Code Online (Sandbox Code Playgroud)

编辑

请注意,;我的查询末尾没有,因为我使用的是 SQL 语句。

php sql oracle oracle-call-interface sql-insert

3
推荐指数
1
解决办法
3209
查看次数

一个 INSERT 带有多个 SELECT

我已经阅读了thisthisthis,但我无法使这个 SQL 工作:

INSERT INTO main_phrase (description) VALUES ('Mot commun féminin pluriel animaux');
/* ERROR: */
WITH
  t1 AS (
    SELECT id 
    FROM main_phrase 
    WHERE description='Mot commun féminin pluriel animaux'
  ),
  t2 AS (
    SELECT id 
    FROM main_groupecategories 
    WHERE description='Mot commun féminin pluriel animaux'
  )
INSERT 
  INTO main_phrasegroupecategories (phrase_id, groupe_categories_id)
  VALUES                           (t1.id,     t2.id);
Run Code Online (Sandbox Code Playgroud)

我得到:

错误:表 t1 的 FROM 子句缺少条目

我错过了什么?

postgresql many-to-many common-table-expression sql-insert sql-returning

3
推荐指数
2
解决办法
6940
查看次数

在 SQL 表中插入日期值

我有下表:

EMPNO(number), ENAME(varchar), JOB(char), MGR(number), HIREDATE(date), SAL(number), DEPTNO(number)
Run Code Online (Sandbox Code Playgroud)

我尝试插入以下内容:

insert into EMP_TF1605(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)
    values(7369, 'SMITH', 'CLERK', 7902, 17-DEC-1980, 800, 20);
Run Code Online (Sandbox Code Playgroud)

结果:发生错误。重新检查您的 SQL 语句

我确定这是不正确的日期?

sql date sql-insert

3
推荐指数
1
解决办法
4万
查看次数

Postgres 从其他表中插入的值

我有两个表:

CREATE TABLE tbl_a (
id serial primary key NOT NULL,
name text NOT NULL,
tbl_b_reference NOT NULL
)

CREATE TABLE tbl_b (
id serial primary key NOT NULL,
status text)
Run Code Online (Sandbox Code Playgroud)

我想做两个插入。一个在 tbl_b 中,然后在我插入 tbl_a 时使用该插入中的 ID。

我试过这个:

INSERT INTO tbl_a(name, tbl_b_reference) 
VALUES ("myName", (INSERT INTO tbl_b (status) VALUES ('OK') RETURNING id));
Run Code Online (Sandbox Code Playgroud)

但我只收到指向第二个“INTO”的语法错误

ERROR: syntax error at or near "INTO" Position: 68
Run Code Online (Sandbox Code Playgroud)

我从哪里开始,是否可以在不编写永久函数或创建触发器的情况下做到这一点?我是 postgres 的新手,只知道 MySQL/MariaDB 的一些基础知识。我一直在这里搜索与嵌套插入相关的其他问题,但找不到我设法实际使用的东西,因此非常感谢代码示例。

postgresql sql-insert database-sequence

3
推荐指数
1
解决办法
2566
查看次数

Postgres INSERT ON CONFLICT DO NOTHING vs SELECT + INSERT 查询

我有stock_price_code如下表格。value列有UNIQUE约束。

create table stock_price_code (
    id serial primary key,
    value text not null,
    unique (value)
);
Run Code Online (Sandbox Code Playgroud)

我想INSERT进入表格,如果没有找到value. 我有这两个查询:

-- query 1
INSERT INTO stock_price_code (value)
    SELECT 'MCD'
    WHERE NOT EXISTS (SELECT * FROM stock_price_code WHERE value = 'MCD')
    RETURNING id;


-- query 2
INSERT INTO stock_price_code (value) VALUES ('MCD')
    ON CONFLICT (value) DO NOTHING
    RETURNING id;
Run Code Online (Sandbox Code Playgroud)

query 1在 Postgres 9.5 之前使用。然后 Postgres 9.5 开始引入INSERT ... ON CONFLICT …

postgresql upsert sql-insert

3
推荐指数
1
解决办法
9598
查看次数

使用 INSERT...SELECT 返回 RETURNING 的替代方法

有这种情况涉及通过从另一个表复制一些列并从该插入中返回生成的键来插入到表中。使用 Oracle 数据库。

这基本上是本能的结果来编写这个查询。

INSERT INTO TBL_XXX
SELECT COLA, COLB, COLC FROM TBL_YYY
RETURNING COLA INTO COL_RES
Run Code Online (Sandbox Code Playgroud)

出于某种正当理由,这是不允许的。

有没有替代方法?

sql oracle insert-select sql-insert sql-returning

3
推荐指数
1
解决办法
4483
查看次数

插入值语句只能包含 SQL 数据仓库中的常量文字值或变量引用

考虑这个表:

CREATE TABLE t (i int, j int, ...);
Run Code Online (Sandbox Code Playgroud)

我想从一组SELECT语句中将数据插入到表中。我的查询的简化版本是:

INSERT INTO t VALUES ((SELECT 1), (SELECT 2), ...);
Run Code Online (Sandbox Code Playgroud)

真正的查询可能要复杂得多,并且各个子查询是独立的。不幸的是,这个标准 SQL 语句(适用于 SQL Server)不适用于 SQL 数据仓库。出现以下错误:

无法执行查询。错误:插入值语句只能包含常量文字值或变量引用。

有没有办法解决这个问题?

sql t-sql azure sql-insert azure-sqldw

3
推荐指数
1
解决办法
8671
查看次数

如何使用子查询作为值之一插入多行?

我正在尝试将多行插入到一个表中,其中一列的值来自另一个查询。但是我收到以下错误

用作表达式的子查询返回的多行

我该怎么做?

INSERT INTO 
   accounts_account_preferences (account_id, preference_id) 
VALUES 
   ((SELECT account_id 
     FROM accounts_account_preferences 
     WHERE preference_id = 1), 2);
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-insert

3
推荐指数
1
解决办法
467
查看次数

MySQL ERROR 1406 (22001):列的数据太长

考虑表标记:

mysql> SELECT * FROM marks;
+--------+------------+-----------------------+
| name   | percentage | email                 |
+--------+------------+-----------------------+
| Bipin  | 84%        | bipin_p@gmail.com     |
| Deepak | 78%        | cool_deepak@gmail.com |
| Rohith | 82%        | rohith_s@gmail.com    |
| Sujit  | 94%        | sujit_jos@gmail.com   |
+--------+------------+-----------------------+
Run Code Online (Sandbox Code Playgroud)

当我进行以下查询以向表中插入值时,导致错误:

mysql> INSERT INTO marks VALUES('&name','&percentage','&email');
ERROR 1406 (22001): Data too long for column 'percentage' at row 1 
Run Code Online (Sandbox Code Playgroud)

它是作为基于有关在 SQL 中使用 ('&') 插入值的另一种方法的信息的实验而完成的。

你能具体说明哪里出了问题吗?根据博客,只需按 ENTER 即可在查询后插入值。

所需的输出:

Enter value for name: John
Enter value for percentage: …
Run Code Online (Sandbox Code Playgroud)

mysql sql insert sql-insert

3
推荐指数
1
解决办法
1425
查看次数

UPSERT 用于“INSERT INTO tab SELECT * FROM another_tab”

从另一个表中插入多行时,我将如何将“UPSERT”(插入或更新)插入到 SQLite 表

我试过了:

INSERT INTO tab_name
SELECT * FROM tmp
ON CONFLICT(id)
    DO UPDATE SET
      val = excluded.val;
Run Code Online (Sandbox Code Playgroud)

但它给了我:

“DO”附近的语法错误

实现这一目标的正确和最有效的方法是什么?

sql sqlite select sql-update sql-insert

3
推荐指数
1
解决办法
83
查看次数