标签: sql-update

如何更新第3行中的列与MySQL中第2行中的列相同?

我是这样做的:

UPDATE products 
   SET products_image = (SELECT products_image 
                           FROM products 
                          WHERE products_id = 2) 
 WHERE products_id = 3;
Run Code Online (Sandbox Code Playgroud)

...但是得到一个错误:

错误1093(HY000):您无法在FROM子句中为更新指定目标表'products'

mysql sql mysql-error-1093 sql-update

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

UPDATE查询已挂起

我有以下查询

UPDATE rec_analyst
           SET analyst_name = (SELECT DISTINCT min (LIQA_ANALYST_LAST_NAME)
                                 FROM LIQA
                                WHERE LIQA_ANALYST_ID = analyst_extern_id
                                      AND LIQA_TS_INSERT = '15.09.2011'

                               )
         WHERE analyst_provider_id = 4
Run Code Online (Sandbox Code Playgroud)

解释计划显示大约4000的成本,但数据库负载是100%,甚至一小时后这个工作还没有准备好.这里解释计划输出:

------------------------------------------------------------------------------------
DESC                            |OBJECT NAME                    |COST| #    |BYTES  | 
------------------------------------------------------------------------------------
UPDATE STATEMENT, GOAL =ALL_ROWS|                               |  34| 16572| 331440|
-------------------------------------------------------------------------------------
  UPDATE                        |REC_ANALYST                    |    |      |       |
-------------------------------------------------------------------------------------
   TABLE ACCESS FULL            |REC_ANALYST                    |  34| 16572|331440 |
-------------------------------------------------------------------------------------
  SORT AGGREGATE                |                               |    |      |24     |
-------------------------------------------------------------------------------------
   TABLE ACCESS FULL            |REC_LIQA_LOAD_INQUIRY_ANALYST  |3965|1     |24     |
-------------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我该如何优化它?

sql oracle sql-update

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

更新引用另一个表

我有一个声明,需要编写(使用通用名称,因为这是为了工作)来更新表'tUpd'中的列'updCol'.tUpd还有一个列'linkCol',它存在于另一个表中.还有另一栏'idCol'.

我的问题是更新tUpd中行的updCol值,这些行通过linkCol对应于具有给定idCol值的行.

我认为应该解决的一个解决方案如下:

update
    tUpd
set
    updCol = XXX
where exists (
    select
        idCol
    from
        tOther
    where
        tOther.linkCol = tUpd.linkCol
    and tOther.idCol = MY_ID
)
Run Code Online (Sandbox Code Playgroud)

但是,我担心这种方法会导致性能不佳,因为我之前已经警告过与性能相关的子查询 - 这个子查询将为tUpd的每一行运行一次,这是正确的吗?

有人有更好的建议吗?

重要更新:我的工作场所不惜一切代价避免使用SQL JOIN,而更喜欢在where子句中使用,例如,where a.col = b.col.这可能相当尴尬,但允许我特别是日志记录的灵活性,我不完全理解.所以,我正在寻找非JOIN使用的解决方案:)

sql informix sql-update

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

使用@values更新MS SQL行

是否可以使用我现有的INSERT代码并让它执行相同的操作但更新?

示例是:

ID  | formTitle1 | formTitle2 | formTitle3 | formTitle4
-------------------------------------------------------
20  | The Rock   | Booker     | The Vine   | Keys
Run Code Online (Sandbox Code Playgroud)

如果我想更新所有4行,那么我想我可以这样做吗?:

sql = "UPDATE formSettings " & _
      "SET (formTitle1, formTitle2, formTitle3, formTitle4) " & _
      "VALUES (@formTitle1, @formTitle2, @formTitle3, @formTitle4) " & _
      "WHERE ID = '" & theID & "'"

Dim updateCmd As New SqlCommand(sql, myCONN)
updateCmd.Parameters.Add("@formTitle1", SqlDbType.VarChar)
updateCmd.Parameters.Add("@formTitle2", SqlDbType.VarChar)
updateCmd.Parameters.Add("@formTitle3", SqlDbType.VarChar)
updateCmd.Parameters.Add("@formTitle4", SqlDbType.VarChar)

updateCmd.Parameters("@formTitle1").Value = "changed1"
updateCmd.Parameters("@formTitle2").Value = "changed2"
updateCmd.Parameters("@formTitle3").Value …
Run Code Online (Sandbox Code Playgroud)

sql vb.net sql-server sql-update

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

我无法在SQL Server中插入表

我创建了一个存储过程,它有两个语句insert和update.

它有两个参数:

@content as nvarchar(10),
@fieldName as int
Run Code Online (Sandbox Code Playgroud)

在Update线路一切正常,但它不会插入到表.语法和一切都是真的,但是当我执行时

Execute sp_update 432,4
Run Code Online (Sandbox Code Playgroud)

SQL Server显示此错误:

消息207,级别16,状态1,行1
无效的列名称"up".
消息207,级别16,状态1,行1
无效的列名称"Field3".

这是我的脚本:

ALTER procedure [dbo].[sp_update]
    @content as nvarchar(10),
    @fieldName as int
as
   declare @ff as varchar
   set @ff = Convert(varchar,@fieldName)

   declare @f as char(7) 
   set @f = 'Field'+ @ff

   declare @sqlupdate varchar(500)
   declare @sqlinserttoChangelog varchar(500)

   set @sqlinserttoChangelog = 'Insert Into dbo.changelog (changeType, fieldname) Values ('+'up'+','+@f+')'
   Exec (@sqlinserttoChangelog)

   set @sqlupdate = 'update TableTest set ' + @f + …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures sql-update sql-insert

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

Oracle 11g - 使用index vs without更新批量

我有一个包含50M记录的表,我必须更新几乎所有记录.我想在表上使用并行更新.哪个会更快,有没有索引?

oracle parallel-processing performance oracle11g sql-update

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

AngularJS编辑数据/表格

我想在AngularJS上创建一个表单来编辑通过REST API访问的数据库行.我没有访问数据的问题,我真正遇到的问题是配置表单进行编辑.我如何能够显示数据,如果用户单击提交按钮,则能够更新数据.下面是我的Angular代码.

   countryApp.controller('EditLocation', function($scope, $http, $routeParams, $location) { 
      //get the item information
      var id = $routeParams.locid; 
      $scope.activePath = null;    

      $http.get('http://localhost/slimtest2/location/'+id).success(function(data) { 
        $scope.location = data;  

      }); 

      $scope.editrel = function() { 
          var editData = { 
              location_title : $scope.l.location_title, 
              location_latitude : $scope.l.location_latitude, 
              location_longitude : $scope.l.location_longitude     
          } 

          //convert data to JSON string
          var loce = JSON.stringify(editData); 


          $http.put('http://localhost/slimtest2/location/edit', loce); 

      }

      $scope.reset = function() { 
        $scope.location = data; 
      } 


    }); 
Run Code Online (Sandbox Code Playgroud)

HTML - 编辑表单

<div ng-controller="EditLocation"> 

   <form name="editform" ng-submit="editrel()"> 
      <div ng-repeat="l in location.location">  
     <label for="location_title">Location Title</label>
     <input …
Run Code Online (Sandbox Code Playgroud)

javascript json sql-update angularjs

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

如何更新sql中的主键值?

我有一个国家表,其中有一列Countryid我意外删除了CountryId哪个Had值= 1,现在在州表中有一个列countryId = 1的值,用于根据国家ID获取记录(状态).我再次插入国家但它有不同的ID,所以如何在CountryId的国家表中再次更新该值,主键从2到

sql sql-server primary-key sql-update

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

触发计数行给出ORA-04091:表是变异的,触发器/函数可能看不到它

更新我的表时出现此错误

 UPDATE "Username"."EMPPROJECT" 
 SET ENDDATE = TO_DATE('2016-09-11 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 
 WHERE ROWID = 'AAF+8XAAEAAGBIGAAB'
   AND ORA_ROWSCN = '537035617'
Run Code Online (Sandbox Code Playgroud)

保存对表"Username"的更改时出错."EMPPROJECT":第8行:
ORA-04091:表Username.EMPPROJECT正在变异,触发器/函数可能看不到它ORA-06512:在"Username.CHECKOVERLAPDATEUPDATE",第4行
ORA-04088 :执行触发器'Username.CHECKOVERLAPDATEUPDATE'时出错

触发器的定义如下:

create or replace trigger checkOverlapDateUpdate 
before Update on EmpProject
for each row
declare
    countOfOverlap integer;
begin
    select count(*) 
    into countOfOverlap 
    from EmpProject EP 
    where isOverlapping(:new.startDate, :new.endDate, startDate, endDate) = 1 
      and EP.EmpID = :new.EmpId;

    if countOfOverlap > 0 
    then
        RAISE_APPLICATION_ERROR(-00000, 'Overlapping Insertion Dates');
        rollback;
    end if;
end;
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql database-trigger sql-update

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

使用一个表中的多列和另一表中的单列更新值

我有下表lc:

a   b   c   d 
co  NA  co  1
co  NA  co  84
us  co  us  6
NA  co  NA  54
us  NA  NA  4
Run Code Online (Sandbox Code Playgroud)

还有另一张桌子 ro

d   value
bb  1
co  0.5
mn  0.03
us  2
Run Code Online (Sandbox Code Playgroud)

我想lc使用中的值更新其中的值ro以获取以下内容:

a    b    c    d 
0.5  NA   0.5  1
0.5  NA   0.5  84
2    0.5  2    6
NA   0.5  NA   54
2    NA   NA   4
Run Code Online (Sandbox Code Playgroud)

我有代码:

lc <- sqldf(c("UPDATE lc SET a = (SELECT ro.value FROM ro …
Run Code Online (Sandbox Code Playgroud)

sql-server r sql-update sqldf

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