标签: insert-update

如果存在,或者如果不存在,则此SQL查询如何更新行?

我正在使用一些代码.有几个查询的效果是,如果行中存在一些数据,则该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:

INSERT INTO table_name (col1, col2, col3)
SELECT %s AS COL1, %s AS COL2, %s AS COL3
FROM ( SELECT %s AS COL1, %s AS COL2, %s AS COL3 ) A
LEFT JOIN table_name B
ON  B.COL1 = %s
AND B.COL2 = %s     --note: doesn't mention all columns here
WHERE B.id IS NULL
LIMIT 1

我可以模仿这种模式,它似乎有效,但我对幕后的实际情况感到困惑.任何人都可以阐明这实际上是如何运作的吗?我正在使用PostgreSQL.

sql postgresql insert-update

7
推荐指数
1
解决办法
975
查看次数

VBA-SQL UPDATE/INSERT/SELECT到/从Excel工作表

简而言之:我正在为我的客户端制作一个调度程序,由于受到限制,它需要在一个excel文件中(尽可能小).因此,一个工作表作为UI工作,其他任何工作表将是表或设置.

我正在尝试使用SQL(我是新手)来处理单个工作表(名为"TblEmpDays")上的计划数据.所以我需要在此工作表中添加/更新和检索记录.我能够获得一个SELECT查询来处理一些任意数据(并粘贴到一个范围).但是,我无法上班INSERTUPDATE上班.我看到它的结构为INSERT INTO [<table name>$] (<field names>) VALUES (<data>);.但是这在INSERT INTO语句中给出了运行时错误" '-2147217900(80040e14)'语法错误. "

我正在使用VBA来编写所有这些,并且我创建了一个SQL帮助程序类,以使查询执行更容易.

为了澄清,我的问题是:我如何构建INSERTUPDATE查询?我错过了什么?我想尽可能多地发布相关信息,所以如果我错过任何内容,请告诉我.

类SQL:

Private pCn ' As Database
Private pResult 'As Recordset
Private pSqlStr As String

Public Property Get Result()
    Result = pResult
End Property

Public Function Init()
    Set pCn = CreateObject("ADODB.Connection")

    With pCn
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                            "Data Source=" & ThisWorkbook.FullName & ";" & _
                            "Extended Properties=""Excel 12.0 Macro;HDR=YES;ReadOnly=False"";"
        .Open
    End …
Run Code Online (Sandbox Code Playgroud)

sql excel vba excel-vba insert-update

7
推荐指数
1
解决办法
9869
查看次数

postgres 插入冲突错误 - 没有唯一或排除约束

daily_report我在 postgres和中有两个表summary_songs

用于创建表的 Sql 文件位于: https: //nofile.io/f/Ef94rMFRh6C/file.sql

summary_songs我想在每天结束时更新以下条件:

  • 如果userid已经不存在,则daily_report需要将记录插入到summary_songs
  • 如果userid存在,则summary_songs.countid = summary_songs.countid+ daily_report.countid.

我使用以下查询来更新summary_songs

insert into summary_songs 
(select * from daily_report as B)
on conflict (userid, songd) 
do update set countid = countid+excluded.countid ;  
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:没有与 ON CONFLICT 规范匹配的唯一或排除约束

sql postgresql insert-update

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

SQL - 表设计 - DateCreated和DateUpdated列

对于我的应用程序,有几个实体类,User,Customer,Post等

我即将设计数据库,我想存储创建和更新实体的日期.这是它变得棘手的地方.当然有一个选择是为每个实体表添加created_timestamp和update_timestamp列但不是那个还原剂?

另一种可能性是创建一个存储此信息的日志表,并且可以使其包含对任何实体的更新的跟踪.

有什么想法吗?我倾向于实施后者.

sql timestamp insert-update

6
推荐指数
2
解决办法
983
查看次数

Linq2Sql - 尝试更新,但sql中的Set语句为空

这很奇怪...之前已经完成了很多次更新,但无法发现为什么会有所不同.虽然我现在使用.net 4.0 - 但我怀疑它的L2S实现中的一个错误.它不像是一个奇怪而精彩的应用程序.虽然我很确定这个代码在我使用RC时有效.

我还设法通过使用以下信息从头开始构建项目来重现此错误.

这里的问题是L2S生成的更新语句在set语句中没有字段.我已经尝试检查pk是否已设置(只是为什么我认为在其中需要ervery字段的原因)并且还读取了其他dbml属性的aroudn.我一直在使用linq2Sql大约1年,从来没有遇到过问题.我仍然认为我只是有一个巨大的脑屁.

注意:我已经清理了equals和GetHashCode方法来删除一些字段 - 此后问题仍然存在.我还没有清理SQL.

我有一个来自dbml的客户端类,我添加了一个名为update的方法

public partial class Client :  ICopyToMe<Client>
Run Code Online (Sandbox Code Playgroud)

CopyToMe方法继承自接口

   public  interface ICopyToMe<T>
    {
        void CopyToMe(T theObject);
    }
Run Code Online (Sandbox Code Playgroud)

该类还覆盖了getHashCode

public override int GetHashCode()
{
    int retVal = 13 ^ ID ^ name.GetHashCode();
    return retVal;
}
Run Code Online (Sandbox Code Playgroud)

和平等

public override bool Equals(object obj)
{
    bool retVal = false;
    Client c = obj as Client;
    if (c != null)
        if (c.ID == this.ID && c._name == this._name)
            retVal = true;
    return retVal;
} 
Run Code Online (Sandbox Code Playgroud)

部分类中的更新方法

 public void …
Run Code Online (Sandbox Code Playgroud)

.net c# sql insert-update linq-to-sql

6
推荐指数
1
解决办法
321
查看次数

PHP PDO简单的插入或更新功能

在尝试创建一个简单的PHP PDO更新函数时,如果找不到该字段会插入它,我创建了这个小片段.

function updateorcreate($table,$name,$value){
    global $sodb;
    $pro = $sodb->prepare("UPDATE `$table` SET value = :value WHERE field = :name");
    if(!$pro){
        $pro = $sodb->prepare("INSERT INTO `$table` (field,value) VALUES (:name,:value)");
    }
    $pro->execute(array(':name'=>$name,':value'=>$value));
}
Run Code Online (Sandbox Code Playgroud)

它不检测更新功能是否可以使用if(!$pro);我们如何使这个工作.

php pdo insert-update

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

如何更新嵌入式文件?

如何将第二条评论的文本更新为"新内容"

{
  name: 'Me',
  comments: [{
        "author": "Joe S.",
        "text": "I'm Thirsty"
    },
    {
        "author": "Adder K.",
        "text":  "old content"
    }]
}
Run Code Online (Sandbox Code Playgroud)

document insert-update rethinkdb

6
推荐指数
1
解决办法
2058
查看次数

如何更新核心数据输入的值

[newVehicle setValue: _txtFieldVehicleNumber.text forKey:@"number"];

[newVehicle setValue: lblFuelType.text forKey:@"fueltype"];

[newVehicle setValue: lblFuelUnit.text forKey:@"fuelunit"];

[newVehicle setValue: lblDistanceUnit.text forKey:@"distanceunit"];
Run Code Online (Sandbox Code Playgroud)

我想更新名为"Vehicle"的核心数据实体,对于该实体,我有几个属性,我想更新其中一些但不是全部,当我从实体中选择特定属性时.所以我该怎么做 ??

attributes entity core-data insert-update ios

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

运行更新查询时出现“子查询返回超过 1 个值”错误

请保持温和,我正在尝试更新 sql server 中的查询,但遇到错误。这是我在同一个数据库中的两个表和下面提供的查询,我的要求是根据表 1 更新 table2 中的列 groupCode,但我面临以下错误:

错误

消息 512,级别 16,状态 1,第 1 行子查询返回了 1 个以上的值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。该语句已终止。

表格1

**Dept**    **DeptCode**    **GroupName**   **GroupCode**
IT      32      Login-Els       1
IT      32      QC-Els          4
CT      20      Login-OUP       1
CT      20      XML-OUP         2
CT      20      QC-OUP          4
MECH    34      Login-CEN       1
MECH    34      XML-CEN         2
MECH    34      PAGINATION-CEN  3
MECH    34      QC-CEN          4
Run Code Online (Sandbox Code Playgroud)

表2

**Activity**    **DeptCode**    **Group**
Login-Els       32      NULL
QC-Els          32      NULL
Login-OUP       20      NULL
XML-OUP         20      NULL
QC-OUP          20      NULL …
Run Code Online (Sandbox Code Playgroud)

sql-server insert-update sql-server-2008 sql-update

6
推荐指数
1
解决办法
9429
查看次数

从插入结果更新表

对于表B,有一个名为a_id的列,它是表A的ID。因此a_id是指向表a的外键,但它只是一个整数列,并且没有设置外键约束。

对于表B中的每一行,我们需要通过在表A中创建新记录来为a_id列提供一个整数值。

在一个SQL中完成以下所有步骤的目标。

  1. 将所有数据插入表A:

    insert into table A (name) values ('abc'), ('def'), ... returning id

  2. 使用步骤1返回的ID(每个ID仅应使用一次)对表B中每一行的Buck更新a_id。

    update table B set a_id = id(from previous insert statement)

尝试过类似的方法:

更新表B set a_id =(从ia中选择ia.id
(插入表A(名称)值('abc'),('def'),...返回ID)为ia)

但这会带来语法错误ERROR: syntax error at or near "into"

如何用一个SQL做到这一点?

sql postgresql insert-update sql-update sql-returning

6
推荐指数
1
解决办法
572
查看次数