我试过了 :
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一起使用?
我想知道这是否可行.如果条件为真,我想更新列x,否则将更新列y
UPDATE table SET
(CASE (CONDITION) WHEN TRUE THEN columnx
ELSE columny
END)
= 25
Run Code Online (Sandbox Code Playgroud)
我搜索了一遍,尝试了一些东西,但无法找到解决方案.我认为这是不可能的,但我想我会问这里,看看是否有人之前做过.提前致谢.
我需要更新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) 我有一个简单的表格结构如下:
表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解决它的方法 …
我想在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中完成我想要的东西?
我想更新表格中的行,从1001开始到下一个1000.
我尝试了以下查询:
UPDATE `oltp_db`.`users` SET p_id = 3 LIMIT 1001, 1000
Run Code Online (Sandbox Code Playgroud)
此外,我尝试更新的行具有列p_id的Null值,该列具有数据类型INTEGER.由于这个原因,我甚至无法使用以下查询进行更新:
UPDATE `oltp_db`.`users` SET p_id = 3 WHERE p_id = null
Run Code Online (Sandbox Code Playgroud)
是否可以在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)
这样做的正确方法是什么?
我有两张桌子,
这是我的第一张桌子,
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)
感谢您的帮助和指导.
理想情况下我想这样做:
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子句.
无论如何如何规避这个?
PostgreSQL的8/9我的数据库驱动程序不返回的执行时,受影响的记录计数INSERT或UPDATE.
PostgreSQL提供非标准语法" RETURNING ",这似乎是一个很好的解决方法.但是语法可能是什么?该示例返回记录的ID,但我需要计数.
INSERT INTO经销商(做,DNAME)VALUES(DEFAULT 'XYZ小部件') RETURNING根本 ;
sql-update ×10
mysql ×4
sql ×4
join ×2
postgresql ×2
sql-server ×2
t-sql ×2
case ×1
dblink ×1
if-statement ×1
limit ×1
plpgsql ×1
sql-order-by ×1
sqlite ×1
transactions ×1