Tag: sql update

SQL更新为其join的值的SUM

我试图将数据库中的一个字段更新为其join的值的总和: UPDATE P SET extrasPrice = SUM(E.price) FROM dbo.BookingPitchExtras AS E INNER JOIN dbo.BookingPitches AS P ON E.pitchID = P.ID AND P.bookingID = 1 WHERE E.[required] = 1 当我运行这个我得到以下错误: "An aggregate may not appear in the set list of an UPDATE statement." 有任何想法吗?

基于另一个表值的MySQL更新表

我有两张桌子, 这是我的第一张桌子, ID SUBST_ID CREATED_ID 1 031938 TEST123 2 930111 COOL123 3 000391 THIS109 4 039301 BRO1011 5 123456 COOL938 … … … 这是我的第二张桌子, ID SERIAL_ID BRANCH_ID 1 039301 NULL 2 000391 NULL 3 123456 NULL … … … 我需要一些如何使用我的第一个表中的数据更新我的第二个表中的所有行。 这将需要在一个更新查询中完成。 SUBST_ID和SERIAL_ID都匹配,它需要从第一个表中获取created_id并将其插入到第二个表中。 所以第二张桌子会变成下面 ID SERIAL_ID BRANCH_ID 1 039301 BRO1011 2 000391 THIS109 3 123456 COOL938 […]

使用另一个表中的数据更新一个表中的行,并根据每一列中的一列相等

根据每个列中相同的一列(user_id)将多行logging从另一个表中更新为一个表。 两个表都有一个user_id列。 当user_id列相等时,需要将t2数据插入到t1中。 提前感谢您提供的任何帮助。

如何使用ms sql来更新和订购

理想情况下,我想这样做: UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC; 用英文:我想从数据库中获得前10个可用(状态= 0)的消息并locking它们(状态= 10)。 应该先获得优先级更高的消息。 不幸的是MS SQL不允许更新中的order by子句。 无论如何如何规避这一点?

MySQL – 用LIMIT更新查询

我想更新我的表中的行从1001开始到下一个1000。 我试着用下面的查询: UPDATE `oltp_db`.`users` SET p_id = 3 LIMIT 1001, 1000 这给我语法错误。 它是否正确? 我在这里犯了什么错误吗? 我们能以这种方式限制更新吗? 此外,我试图更新的行是具有数据types为INTEGER的列p_id的空值。 由于这个,我甚至无法使用以下查询进行更新: UPDATE `oltp_db`.`users` SET p_id = 3 WHERE p_id = null 我的上述查询是否正确? 有什么可以做到这一点呢?

MySQL:只有满足条件时才更新字段

是否有可能做一个MySQL更新查询,只有在满足某些条件时才更新字段值? 像这样的东西: UPDATE test SET CASE WHEN true THEN field = 1 END WHERE id = 123 换一种说法: 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 什么是正确的方法来做到这一点?

我如何在PostgreSQL中进行大量的无阻塞更新?

我想在PostgreSQL的表上​​做一个大的更新,但是我不需要在整个操作中维护事务完整性,因为我知道我正在更改的列不会被写入或读取更新。 我想知道在psql控制台中是否有一种简单的方法来使这些types的操作更快。 例如,假设我有一个包含3500万行的“orders”表,我想这样做: UPDATE orders SET status = null; 为了避免被转移到偏离的讨论,让我们假设3500万列的所有状态值目前设置为相同(非空值),从而使索引无用。 这个声明的问题是生效需要很长时间(仅仅是因为locking),所有更改的行都被locking,直到整个更新完成。 此更新可能需要5个小时,而类似的 UPDATE orders SET status = null WHERE (order_id > 0 and order_id < 1000000); 可能需要1分钟。 超过三千五百万行,做上面的,并把它分成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) […]

如何在Postgres 9.4中对JSONBtypes的列执行更新操作

仔细查看Postgres 9.4数据typesJSONB的文档,我不会立即明白如何在JSONB列上进行更新。 JSONBtypes和function的文档: http://www.postgresql.org/docs/9.4/static/functions-json.html http://www.postgresql.org/docs/9.4/static/datatype-json.html 举个例子,我有这个基本的表结构: CREATE TABLE test(id serial, data jsonb); 插入很容易,如: INSERT INTO test(data) values ('{"name": "my-name", "tags": ["tag1", "tag2"]}'); 现在,我将如何更新“数据”列? 这是无效的语法: UPDATE test SET data->'name' = 'my-other-name' WHERE id = 1; 这是logging在某处明显,我错过了? 谢谢。

MYSQL – 在一个查询中更新具有不同值的多个行

我想了解如何更新不同值的多行,我只是不明白。 解决scheme无处不在,但对我来说,看起来很难理解。 例如,三个更新到1查询: UPDATE table_users SET cod_user = '622057' , date = '12082014' WHERE user_rol = 'student' AND cod_office = '123456'; UPDATE table_users SET cod_user = '2913659' , date = '12082014' WHERE user_rol = 'assistant' AND cod_office = '123456'; UPDATE table_users SET cod_user = '6160230' , date = '12082014' WHERE user_rol = 'admin' AND cod_office […]

SQL更新另一个字段的一个表的字段

我有两个表格: A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] A将永远是B子集(意味着A所有列也都在B )。 我想用A中所有列的A的数据更新B具有特定ID的logging。 此ID存在于A和B 。 有没有UPDATE语法或任何其他方式来做到这一点,而不指定列名称,只是说“设置A的所有列” ? 我正在使用PostgreSQL,所以一个特定的非标准命令也被接受(但不是首选)。