Questions tagged «update»

UPDATE更改所有满足条件的行中指定列的值。SET子句中仅需提及要修改的列;未显式修改的列将保留其先前的值。

2
用来自另一个表的数据更新列
我正在研究复杂的问题,但是我将简化为这个问题。 我有两张桌子 A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] 我想更新第三个: C [ID, column1, column2,column3] 我正在使用此查询更新另一个第三张表。 UPDATE C set column1=t.firstTab, column2=t.secondTab, column3=t.thirdTab from (select A.column1 as firstTab, B.column2 as secTab, (A.column1 + B.column2) thirdTab from A, B limit 1; ) as t ; 我有: UPDATE 0 当我运行此查询时: …

1
为什么我的SQL Server查询在UPDATE上的行为不同于在SELECT上的行为?
我编写了一个SQL Server查询,该查询在对字段进行分区后将记录更新为具有序号。当我将其作为SELECT语句运行时,一切看起来都很不错: DECLARE @RunDetailID INT = 448 DECLARE @JobDetailID INT SELECT @JobDetailID = [JobDetailID] FROM [RunDetails] WHERE [RunDetailID] = @RunDetailID SELECT [OrderedRecords].[NewSeq9], RIGHT([OrderedRecords].[NewSeq9], 4) FROM ( SELECT [Records].*, [Records].[SortField] + RIGHT('0000' + CAST(ROW_NUMBER() OVER(PARTITION BY [Records].[SortField] ORDER BY [Records].[RunDetailID], [Records].[SortField], [Records].[PieceID]) AS VARCHAR), 4) NewSeq9 FROM ( SELECT [MRDFStorageID], [RunDetailID], …

1
在MySQL中批处理UPDATE查询的最有效方法是什么?
我正在编写一个应用程序,该应用程序需要长时间刷新数据库的大量更新,而我一直沉迷于如何优化查询。目前,我正在使用INSERT INTO ... VALUES (..), (..) ON DUPLICATE KEY UPDATE,它可以将所有值批处理到一个查询中,但是在大型表上执行速度非常慢。我实际上从来不需要插入行。 我见过的其他方法是使用更新SET value = CASE WHEN...(由于我构建查询的方式而很难生成,并且我不确定CASE数百/数千个键的性能),并且只是多个连接更新。这些方法都比我目前的方法快吗? 据我所知,在MySQL中没有一种惯用的,有效的方法可以使我感到困惑。如果确实没有比更快的方法ON DUPLICATE KEY,是否值得切换到PostgreSQL并使用其UPDATE FROM语法? 任何其他建议也将不胜感激! 编辑:这是经常更新的表之一。由于它们不相关,因此我删除了列名。 CREATE TABLE IF NOT EXISTS `table` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `a` bigint(20) unsigned NOT NULL DEFAULT '0', `b` bigint(20) unsigned NOT NULL DEFAULT '0', `c` enum('0','1','2') …
10 mysql  update 

1
向大表添加串行列的最有效方法
将BIGSERIAL列添加到巨大的表(〜3个Bil。行,〜174Gb)中,最快的方法是什么? 编辑: 我希望该列为现有行(NOT NULL)的增量值。 我没有设置填充因子(回想起来,这似乎是一个错误的决定)。 我的磁盘空间没有问题,只是希望它尽可能快。

1
在Postgres中优化并发更新
我正在运行并发Postgres查询,如下所示: UPDATE foo SET bar = bar + 1 WHERE baz = 1234 每个查询都会影响固定的K个行数,而且我找不到一种方法来强制更新行的顺序,最终导致死锁。当前,我通过手动执行顺序来解决此问题,但这意味着我必须执行比平时更多的查询,同时还将搜索复杂度从O(log N + K)提升到O(K log N)。 有没有一种方法可以提高性能而又不会导致死锁?我怀疑只要Postgres以与扫描行相同的顺序更新行,就可以用(baz)索引替换索引(baz, id),这是值得追求的方法吗?

2
使用单个语句更新表中的许多行?
更新表中许多行的最简单方法是什么?我有一个csv文件,看起来像这样: |primary_key |value| | 1 | xyz| | 2 | abc| | 3 | def| ... 目标表中已经存在具有这些主键的行 我想用这些值更新目标表。有没有语法,所以我可以写类似: update mytable set value = ('xyz', 'abc', 'def') where primary key = (1,2,3); 查看《MySQL更新参考》,该站点(MySQL-csv更新),SO(更新多行,多数据库更新,更新多行),我怀疑答案是“否”,但我想确认这一点。是真的。
9 mysql  update  replace 

2
更新大小为5k的行时出现8k行溢出错误
我正在尝试将具有5k大小的一行的目标表也更新为5k的行。 由于是一行,因此很容易知道行的实际大小: select * from sys.dm_db_index_physical_stats(DB_ID('RODS_HSD_ES'), OBJECT_ID(N'TBL_BM_HSD_SUBJECT_AN_148_REPRO'), NULL, NULL, 'DETAILED') 复制 自创建以来,表未更改。没有看到任何原因导致它失败。有想法吗?

1
如何从PostgreSQL的JSON []数组中删除已知元素?
我面临有关在PostgreSQL中使用JSON数据类型的问题。我试图实现在数据库中存储非规范化的Java模型。该模型具有复杂对象列表。因此,我决定在本地PostgreSQL数组中将其建模为JSON。 这是我的表创建语句的摘要: CREATE TABLE test.persons ( id UUID, firstName TEXT, lastName TEXT, communicationData JSON[], CONSTRAINT pk_person PRIMARY KEY (id) ); 如您所见,这是一个具有JSON中通讯数据对象列表的人。这些对象之一可能看起来像这样: {"value" : "03334/254147", "typeId" : "ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf6"} 我可以使用PostgreSQL的array_append轻松地将这样的JSON对象附加到数组。但是,我无法从数组中删除已知值。考虑一下这个SQL语句: UPDATE test.persons SET communicationData = array_remove( communicationData, '{"value" : "03334/254147", "typeId" : "ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf6"}'::JSON ) WHERE id = 'f671eb6a-d603-11e3-bf6f-07ba007d953d'; 失败ERROR: could not identify …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.