标签: sql-insert

重复密钥更新增值

我有一个带有架构的表:

storeId varchar(255),
ttl int,
date varchar(255),
bytes bigint(255),
UNIQUE KEY storeId_date_index (storeId, date)
Run Code Online (Sandbox Code Playgroud)

我想插入一行(如果不存在),否则更新它。

对于我点击的每个重复键,我想将旧值与新值相加。这个命令怎么可能呢ON DUPLICATE KEY UPDATE

这是我到目前为止所拥有的:

insert into table (storeId, date, ttl, bytes) 
values 
('477866', '2019-02-05', 54543543, 100),
('6301', '2019-02-05', 54543543, 999999),
('12345', '2019-02-05', 54543543, 999999)
ON DUPLICATE KEY UPDATE
bytes = oldval + newval # sum old value with new value where storeId and date match in the values
Run Code Online (Sandbox Code Playgroud)

mysql sql syntax upsert sql-insert

2
推荐指数
1
解决办法
2299
查看次数

将 GETDATE() 插入日期时间列时 Azure 数据仓库出错

我尝试将当前日期插入datetimeAzure SQL 数据仓库中的列中,但出现以下错误。

CREATE TABLE TEST (MYTEXT VARCHAR(15), MYDATE DATETIME); 

INSERT INTO TEST (MYTEXT, MYDATE) 
VALUES ('ABCD', GETDATE());
Run Code Online (Sandbox Code Playgroud)

消息 104334,级别 16,状态 1,第 11 行
插入值语句只能包含常量文字值或变量引用。

sql sql-server sql-insert

2
推荐指数
1
解决办法
5772
查看次数

Oracle 管道化表函数并将结果插入到 Oracle 表中

我正在使用 Oracle 管道表函数,并根据返回的记录,我想将每行数据插入到 Oracle 表中,该表具有完全相同的列数,即:

我写了一个split函数,它return type pipelined一切正常。

SELECT column_value as val
FROM   TABLE(split(',AA,BB,CC,,,FF,GG,,,HH,'))
Run Code Online (Sandbox Code Playgroud)

它在列别名下返回 11 行数据val

val
----
NULL
AA
BB
CC,
NULL
NULL
FF
GG
NULL
NULL
HH
Run Code Online (Sandbox Code Playgroud)

现在我还有一个msg_log具有以下定义的表:

CREATE TABLE msg_log
(
    C001    VARCHAR2(4000 BYTE),
    C002    VARCHAR2(4000 BYTE),
    C003    VARCHAR2(4000 BYTE),
    C004    VARCHAR2(4000 BYTE),
    C005    VARCHAR2(4000 BYTE),
    C006    VARCHAR2(4000 BYTE),
    C007    VARCHAR2(4000 BYTE),
    C008    VARCHAR2(4000 BYTE),
    C009    VARCHAR2(4000 BYTE),
    C010    VARCHAR2(4000 BYTE),
    C011    VARCHAR2(4000 BYTE)
);
Run Code Online (Sandbox Code Playgroud)

使用从管道函数返回的值split,我如何访问每条 11 …

sql oracle oracle11g sql-insert

2
推荐指数
1
解决办法
882
查看次数

只有一列用于 SELECT 的 INSERT SELECT 语句

我正在使用 SQL Server Management Studio 18,并且我得到了包含以下列的下表:

表A

[ID]
[Name]
[InternalEmplID]
Run Code Online (Sandbox Code Playgroud)

表B

[ID]
[InternalEmplID]
[Month]
[Year]
Run Code Online (Sandbox Code Playgroud)

我想做一个INSERT SELECT到 TableB 的操作,也许像下面这样:

INSERT INTO TableB
(InternalEmplID, Month, Year)
VALUES
((SELECT InternalEmplIDFROM TableA WHERE Name = 'John Smith'), 'July', '2020')
Run Code Online (Sandbox Code Playgroud)

基本上,我只想创建INSERT SELECT一个从另一个表( )中获取列的位置InternalEmplID,然后对于其他列(MonthYear),我想添加不依赖于另一个表中的列/数据的数据。这可能吗?我不太熟悉INSERT SELECT's 所以这对我来说都是新的。

sql database sql-server select sql-insert

2
推荐指数
1
解决办法
6741
查看次数

使用从其他表上插入返回的 id 更新表

我试图弄清楚如何将 Table1 中的数据插入到 Table2 中,然后使用 Table2 中新创建的 ID 来更新 Table1 中的相应行。

我使用 Postgres 12.4 是为了它的价值

示例:我有两个表,例如usersmetadata

用户表有以下列

| id | info | metadata_id |
Run Code Online (Sandbox Code Playgroud)

元数据表有以下列

| id | data |
Run Code Online (Sandbox Code Playgroud)

我想将表中的所有info值迁移到表的列users中,并使用相应的值更新我的值(当前为空白),本质上是回填外键。datametadatausers.metadata_idmetadata.id

有什么办法可以优雅地完成这个任务吗?我有一个工作查询,它​​锁定两个表并创建一个临时序列以插入到 and 中metadata.idusers.metadata_id但这似乎很脆弱,我需要在元数据表中现有的最高 ID 之后启动序列,这并不理想。

我还尝试使用带有 RETURNING 子句的数据修改 CTE 来更新表users,但无法使其正常工作。

sql postgresql common-table-expression sql-update sql-insert

2
推荐指数
1
解决办法
1262
查看次数

Oracle SQL - 带Where 子句的插入语句

我正在尝试将数据插入表中特定行的特定列中,并且我确信我做错了什么,因为这是我第一次使用Where 执行Insert 语句:

insert INTO mekka_h_o_a_fees
  columns(money_handed_to_commity),
  Where Month_Year = July
  VALUES(Yes)
Run Code Online (Sandbox Code Playgroud)

先感谢您

sql oracle where-clause sql-update sql-insert

2
推荐指数
1
解决办法
6763
查看次数

SQL 将 JSON 插入表列

在寻找将数组插入单个数据库列的方法时,我发现了一篇关于插入 JSON 字符串的文章。但没有解释如何进行。我试图寻找并找到方法,但没有成功。

我有下表:

姓名 类型
ID 整数 人工智能
姓名 细绳
地址 JSON(长文本)

我想要做的是在address列中插入一个 JSON 数组,例如:

ID 姓名 地址
1 用户名 [{street: "street address", city: "Berlin"}]

我考虑过将 JSON 作为字符串插入,但我不确定这是否是一个好主意。有什么建议么?

mysql sql arrays json sql-insert

2
推荐指数
1
解决办法
5万
查看次数

Oracle - 带有 INSERT 和 UPDATE 的合并语句

我有一个名为 TextData 的现有表,其中包含 TextId 和 Text 字段。在下面的语句中,我尝试使用 - 将一些记录合并(插入/更新)到该表中

MERGE INTO maestro.TEXTDATA T
USING ( 
select N'/Common/UserStatusExpired', N'Expired' from dual
union all select N'/Common/UserStatusPwdExpired', N'Pwd Expired' from dual
) AS Source (Id, Txt) ON (T.TEXTID = Source.Id)
WHEN MATCHED THEN
    UPDATE SET TEXT = Source.Txt
WHEN NOT MATCHED THEN
    INSERT (TEXTID, TEXT) VALUES(Source.Id, Source.Txt);
Run Code Online (Sandbox Code Playgroud)

但是,收到此错误 -

missing ON keyword
Run Code Online (Sandbox Code Playgroud)

谁能建议我在合并声明中缺少什么。

谢谢你!

sql oracle sql-update sql-insert

2
推荐指数
1
解决办法
9459
查看次数

如何在sqlite中添加特定数量的空行?

我有一个SQLite文件,我想添加2550 empty (NULL)行。

我可以使用此代码添加一个空行

INSERT INTO my_table DEFAULT VALUES
Run Code Online (Sandbox Code Playgroud)

但我需要 2550 行。有什么捷径吗?我不想执行相同的代码 2550 次。

sql sqlite sql-insert android-sqlite

2
推荐指数
1
解决办法
1633
查看次数

使用此INSERT INTO语句和.NET OleDb命名空间时如何解决语法错误?

当我尝试将值插入Access数据库时,我一直收到错误.

错误是语法错误,导致以下异常:

INSERT INTO语句中的OleDbException未处理语法错误.

private OleDbConnection myCon;

public Form1()
{
    InitializeComponent();
    myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\File.mdb");
}

private void insertuser_Click(object sender, EventArgs e)
{
    OleDbCommand cmd = new OleDbCommand();
    myCon.Open();
    cmd.Connection = myCon;
    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "INSERT INTO User ([UserID], [Forename], [Surname], " +
                                        "[DateOfBirth], [TargetWeight], [TargetCalories], [Height]) " +
                      "VALUES ('" + userid.Text.ToString() + "' , '" +
                                    fname.Text.ToString() + "' , '" +
                                    sname.Text.ToString() + "' , '" +
                                    dob.Text.ToString() + "' , '" + …
Run Code Online (Sandbox Code Playgroud)

c# oledb ms-access syntax-error sql-insert

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