标签: sql-update

如何在SQLite上连接表时进行更新?

我试过了 :

UPDATE closure JOIN item ON ( item_id = id ) 
SET checked = 0 
WHERE ancestor_id = 1
Run Code Online (Sandbox Code Playgroud)

和:

UPDATE closure, item 
SET checked = 0 
WHERE ancestor_id = 1 AND item_id = id
Run Code Online (Sandbox Code Playgroud)

两者都适用于MySQL,但那些在SQLite中给我一个语法错误.

如何使这个UPDATE/JOIN与SQLite版本3.5.9一起使用?

sqlite join sql-update

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

T-SQL:在UPDATE语句中使用CASE根据条件更新某些列

我想知道这是否可行.如果条件为真,我想更新列x,否则将更新列y

UPDATE table SET
     (CASE (CONDITION) WHEN TRUE THEN columnx
                       ELSE columny
      END)
= 25
Run Code Online (Sandbox Code Playgroud)

我搜索了一遍,尝试了一些东西,但无法找到解决方案.我认为这是不可能的,但我想我会问这里,看看是否有人之前做过.提前致谢.

sql case sql-update

91
推荐指数
4
解决办法
26万
查看次数

mysql使用相同的now()更新多个列

我需要更新2个datetime列,我需要它们使用mysql 4.1.20版完全相同.我正在使用此查询:

mysql> update table set last_update=now(), last_monitor=now() where id=1;
Run Code Online (Sandbox Code Playgroud)

它是安全的,或者有可能在不同的时间更新列,因为有2个可见的调用now()
我不认为它可以与不同的值(我认为内部MySQL调用更新now()每行或类似的东西只有一次),但我不是专家,你觉得呢?

第二个问题为什么此查询不更新列:

mysql> update table set last_update=now(), last_monitor=now() where id=1;
Run Code Online (Sandbox Code Playgroud)

mysql sql-update

80
推荐指数
3
解决办法
21万
查看次数

使用Sql Server中的子查询更新查询

我有一个简单的表格结构如下:

tempData

????????????????????
?   NAME   ? MARKS ?
????????????????????
? Narendra ?    80 ?
? Ravi     ?    85 ?
? Sanjay   ?    90 ?
????????????????????
Run Code Online (Sandbox Code Playgroud)

而且我还有另一个表名为tempDataView,就像这样

????????????????????
?   NAME   ? MARKS ?
????????????????????
? Narendra ?       ?
? Narendra ?       ?
? Narendra ?       ?
? Narendra ?       ?
? Ravi     ?       ?
? Ravi     ?       ?
? Sanjay   ?       ?
????????????????????
Run Code Online (Sandbox Code Playgroud)

我想更新表tempDataView,通过设置标志 根据tempDataView - 名称相比的TempData - 名称

是的,让我告诉你我尝试了什么,我试图用Cursor解决这个问题,并且它完美地解决了,但我找到了使用Subquery解决它的方法 …

sql t-sql sql-server sql-update

65
推荐指数
3
解决办法
23万
查看次数

如何在PostgreSQL中进行大型非阻塞更新?

我想在PostgreSQL中对表进行大量更新,但我不需要在整个操作中维护事务完整性,因为我知道我正在更改的列不会被写入或读取更新.我想知道psql控制台中是否有一种简单的方法可以更快地完成这些类型的操作.

例如,假设我有一个名为"orders"的表,有3500万行,我想这样做:

UPDATE orders SET status = null;
Run Code Online (Sandbox Code Playgroud)

为避免被转移到offtopic讨论,让我们假设3500万列的所有状态值当前都设置为相同(非空)值,从而使索引无用.

此语句的问题是需要很长时间才能生效(仅因为锁定),并且所有更改的行都将被锁定,直到整个更新完成.此更新可能需要5个小时,而类似

UPDATE orders SET status = null WHERE (order_id > 0 and order_id < 1000000);
Run Code Online (Sandbox Code Playgroud)

可能需要1分钟.超过3500万行,执行上述操作并将其分成35块只需要35分钟,节省了4小时25分钟.

我可以用脚本进一步分解它(在这里使用伪代码):

for (i = 0 to 3500) {
  db_operation ("UPDATE orders SET status = null
                 WHERE (order_id >" + (i*1000)"
             + " AND order_id <" + ((i+1)*1000) " +  ")");
}
Run Code Online (Sandbox Code Playgroud)

此操作可能仅在几分钟内完成,而不是35分钟.

所以这归结为我真正的要求.我不想写一个怪异的脚本来分解操作,每次我想做这样一个大的一次性更新.有没有办法在SQL中完成我想要的东西?

postgresql dblink transactions plpgsql sql-update

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

MySQL - 使用LIMIT进行UPDATE查询

我想更新表格中的行,从1001开始到下一个1000.

我尝试了以下查询:

UPDATE `oltp_db`.`users` SET p_id = 3 LIMIT 1001, 1000
Run Code Online (Sandbox Code Playgroud)
  1. 这给了我语法错误.它是否正确?我在这里犯了什么错
  2. 我们能以这种方式限制更新吗?

此外,我尝试更新的行具有列p_id的Null值,该列具有数据类型INTEGER.由于这个原因,我甚至无法使用以下查询进行更新:

UPDATE `oltp_db`.`users` SET p_id = 3 WHERE p_id = null
Run Code Online (Sandbox Code Playgroud)
  1. 我上面的查询是否正确?
  2. 可以做些什么来实现这一目标?

mysql limit sql-update

61
推荐指数
4
解决办法
18万
查看次数

MySQL:仅在满足条件时更新字段

是否可以在MySQL中执行UPDATE查询,只有在满足某些条件时才更新字段值?像这样的东西:

UPDATE test
SET
    CASE
        WHEN true
        THEN field = 1
    END
WHERE id = 123
Run Code Online (Sandbox Code Playgroud)

换一种说法:

UPDATE test
SET
    something = 1,        /*field that always gets updated*/
    CASE
        WHEN true
        THEN field = 1    /*field that should only get updated when condition is met*/
    END
WHERE id = 123
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

mysql if-statement sql-update

57
推荐指数
3
解决办法
11万
查看次数

MySQL更新表基于另一个表值

我有两张桌子,

这是我的第一张桌子,

ID      SUBST_ID        CREATED_ID
1       031938          TEST123
2       930111          COOL123
3       000391          THIS109
4       039301          BRO1011
5       123456          COOL938
...     ...             ...
Run Code Online (Sandbox Code Playgroud)

这是我的第二张桌子,

ID      SERIAL_ID       BRANCH_ID
1       039301          NULL
2       000391          NULL
3       123456          NULL
...     ...             ...
Run Code Online (Sandbox Code Playgroud)

我需要一些如何使用第一个表中的数据更新第二个表中的所有行.

它需要在一个更新查询中完成所有操作.

SUBST_ID和SERIAL_ID都匹配,它需要从第一个表中获取created_id并将其插入第二个表中.

所以第二个表将成为以下表,

ID      SERIAL_ID       BRANCH_ID
1       039301          BRO1011
2       000391          THIS109
3       123456          COOL938
...     ...             ...
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助和指导.

mysql join sql-update

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

如何使用ms sql更新和订购

理想情况下我想这样做:

UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC;
Run Code Online (Sandbox Code Playgroud)

英文:我想从数据库中获取前10个可用(状态= 0)消息并锁定它们(状态= 10).应首先获得具有更高优先级的消息.

遗憾的是,MS SQL不允许更新中的order by子句.

无论如何如何规避这个?

sql t-sql sql-server sql-order-by sql-update

49
推荐指数
3
解决办法
9万
查看次数

获取PostgreSQL中受INSERT或UPDATE影响的记录数

PostgreSQL的8/9我的数据库驱动程序不返回的执行时,受影响的记录计数INSERTUPDATE.

PostgreSQL提供非标准语法" RETURNING ",这似乎是一个很好的解决方法.但是语法可能是什么?该示例返回记录的ID,但我需要计数.

INSERT INTO经销商(做,DNAME)VALUES(DEFAULT 'XYZ小部件') RETURNING根本 ;

sql postgresql sql-update

48
推荐指数
3
解决办法
5万
查看次数