标签: sql-update

MySQL查询以更新日期递增的记录

我在尝试着

  1. 获取数据库中的最新日期,以及
  2. 根据该日期更新每条有NULL日期的记录,将日期增加 1 天。

我可以使用下面的最新日期查询来获取最新日期。我需要先执行此操作,因为表中的日期未按顺序排列。如果需要,我可以运行此查询,手动将其写下来,然后UPDATE根据此日期运行查询。我宁愿在没有手动过程的情况下运行所有​​内容。

我在问题底部的最后一个查询是我尝试更新日期的测试查询,但是我没有运气让它工作。

表(日期不分先后)

id     date
-----  ----------
10500  2013-08-18
10501  2013-08-16
10502  2013-08-17
10503  2013-08-19
10504  NULL
10505  NULL
...
11800  NULL
11801  NULL
Run Code Online (Sandbox Code Playgroud)

选择最晚日期(起点UPDATE

SELECT date
FROM my_table
ORDER BY date DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

更新NULL日期(不起作用

UPDATE my_table
SET date = DATE_ADD((SELECT date FROM my_table ORDER BY date DESC LIMIT 1), INTERVAL 1 DAY)
WHERE date IS NULL
ORDER …
Run Code Online (Sandbox Code Playgroud)

mysql sql date sql-date-functions sql-update

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

更新 MS SQL 中的一个特定单元格

我有这样的桌子

Name      Answer
 A -------  Y
 B -------  N
 C  ------  N
 D  ------  Y
 E  ------  Y
Run Code Online (Sandbox Code Playgroud)

我的问题是我只想更新具有“Y”的单元格,而不是更新整个答案列。我试过的是

UPDATE TABLE1
        SET Answer = 'N' 
WHERE userID=1;
Run Code Online (Sandbox Code Playgroud)

这更新了所有答案,我只想更新“Y”

sql sql-server sql-update

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

MySQL:如果值仅为数字,则更新列

如果值仅为数字,有没有办法更新 mysql 中的列?

IE。 UPDATE myTable SET ColumnA =NewValue WHERE ColumnA isnumeric

Column Avarchar(25)Column A值可以是文本或 1 或 2 或 23 ...

感谢你

regex mysql sql numeric sql-update

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

MySQL用表2数据更新表1

抱歉标题含糊不清。

我有两个表:

表格1: mailing_email

表 2(动态表,但现在是): membership

表 1 包含数据库中所有电子邮件帐户的列表和一些辅助字段,例如姓名。它还有一个名为communicate.

communicate基本上是我的术语subscribed。任何取消订阅链接都将设置communicate为 false。

双方mailing_emailmembership有一个emailcommunicate列。

我需要编写一个查询,其中发生以下情况:

mailing_email.communicate更新为membership.communicatewhere mailing_email.email=的当前状态membership.email。如果存在mailing_email其中不存在的电子邮件membership,则该communicate字段保持不变。

我将如何以最快的方式做到这一点?每个表将有数千行,此同步命令将经常运行。

mysql sql database synchronization sql-update

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

更新表中的订单列但保持订单

我有一张桌子

id | title | F_ID  | order
----------------------------
1  | test 1| 1     | 44
2  | test 3| 1     | 3
3  | test 4| 1     | 1
4  | test 5| 2     | 1
Run Code Online (Sandbox Code Playgroud)

我想将所有 F_ID 为 1 的行的订单列更新为 +10 但保留订单

结果必须是

id | title | F_ID  | order
----------------------------
1  | test 1| 1     | 30
2  | test 3| 1     | 20
3  | test 4| 1     | 10
4  | test 5| 2     | …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-update

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

使用 ODP.net 更新表时出现 ORA-01722 错误

我正在尝试更新一个类似于以下内容的表:

column a VARCHAR2(80)
Run Code Online (Sandbox Code Playgroud)

使用以下函数:

sqlString = "UPDATE TABLE SET domicilio = :p_domicilio WHERE codigo = :p_codigo";
string sqlCommandtext = sqlString; 
using (var cn = new OracleConnection("DATA SOURCE=XXX..."))
{
    cn.Open();

    using (OracleCommand commandInt32 = cn.CreateCommand())
    {
        cmd.CommandText = sqlCommandtext;
        cmd.Parameters.Add("p_codigo", OracleDbType.Int32, 34620, ParameterDirection.Input);

        cmd.Parameters.Add("p_domicilio", OracleDbType.Varchar2, ParameterDirection.Input).Value = domicilio;
        //cmd.Parameters.Add("p_domicilio", OracleDbType.Varchar2, domicilio, ParameterDirection.Input);

        cmd.ExecuteNonQuery();
    }
}
Run Code Online (Sandbox Code Playgroud)

但得到“ ORA-01722 无效号码”异常。

我试试

cmd.Parameters.Add("p_domicilio", OracleDbType.Varchar2, ParameterDirection.Input).Value = domicilio;
Run Code Online (Sandbox Code Playgroud)

cmd.Parameters.Add("p_domicilio", OracleDbType.Varchar2, domicilio, ParameterDirection.Input);
Run Code Online (Sandbox Code Playgroud)

    var pDomicilio = new Oracle.DataAccess.Client.OracleParameter()
    {
        DbType = DbType.String, …
Run Code Online (Sandbox Code Playgroud)

c# oracle parameters odp.net sql-update

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

如何在 OPENQUERY 中使用更新和加入

我在 SQL Server 2008 R2 表中有几行

ConfirmTable (ItemID, Barcode)
Run Code Online (Sandbox Code Playgroud)

以及 DB2 头文件中的更多行

O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)
Run Code Online (Sandbox Code Playgroud)

和详细文件

O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)
Run Code Online (Sandbox Code Playgroud)

如果ItemIDBarcode存在于ConfirmTable. 我正在尝试使用以下查询,但似乎显示以下错误。

链接服务器“LINK_DB”的 OLE DB 提供程序“DB2OLEDB”返回消息“更新或刷新的键列信息不足。”

代码:

UPDATE OQ 
SET OQ.Delivered='YES'
FROM OPENQUERY(LINK_DB, 'SELECT * 
                         FROM XXXXR.HLIB.O1 O1O 
                         LEFT JOIN XXXXR.HLIB.O2 O2O ON O1O.ItemID = O2O.ItemID 
                         WHERE O1O.Qty > 0') OQ 
INNER JOIN 
    ConfirmTable CT ON CT.Barcode = OQ.Barcode
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下更新格式,但它对我不起作用。

http://www.experts-exchange.com/questions/28390846/OPENQUERY-in-sql-server-linked-server.html

sql-server db2 join linked-server sql-update

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

如何在 SQL Server 中的 UPDATE 查询的子查询中引用表变量

我在存储过程中有一个 UPDATE 查询,其中我需要更新一个已经由一些数据填充的表变量。这个查询,如下面的代码,由于在子查询中引用了表变量,即在子查询中@daysPerEmail.ProductId被引用而给出错误。我尝试为表变量使用别名,如 in UPDATE @daysPerEmail d SET LastEmailDate...,但它没有帮助。

问题:如何重写查询以便在子查询中正确引用 ProductId 的表变量列?

UPDATE @daysPerEmail SET LastEmailDate = (SELECT max(ActionDate) FROM 
        useractionsreport  WHERE ProductId = @daysPerEmail.ProductId 
       and ActionTypeId = @userActionTypeId );
Run Code Online (Sandbox Code Playgroud)

更新 1

为了在 SSMS 中重现这一点,我使用以下查询。SSMS 给出一个错误说Must declare the scalar variable "@daysPerEmail".

DECLARE @daysPerEmail TABLE (
    VendorId INT,
    DaysPerEmail SMALLINT,
    LastEmailDate DATE,
    ProductId INT 
)

INSERT INTO @daysPerEmail (VendorId, DaysPerEmail, LastEmailDate, ProductId)
    VALUES (10, 5, NULL, 11), (12, 3, NULL, 15), (14, 1, NULL, 22);

UPDATE …
Run Code Online (Sandbox Code Playgroud)

sql-server table-variable sql-update sql-server-2014

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

更新分区键,不允许行移动

我想更新分区键。分区如下

PARTITION_NAME  LAST_ANALYZED   NUM_ROWS    BLOCKS  SAMPLE_SIZE HIGH_VALUE
PORTAL_SERVICE_1    12/8/2016   4133    174 4133    1
PORTAL_SERVICE_2    6/8/2016    4474    174 4474    2
PORTAL_SERVICE_3    10/8/2016   29602   2014    29602   3
PORTAL_SERVICE_OTHERS   24/5/2016   0   110     DEFAULT
Run Code Online (Sandbox Code Playgroud)

此分区应用于列 Portal_Service_id。我想将门户服务 ID 的值从 2 更新为 1。

当我尝试

update trans set PORTAL_SERVICE_ID = 1 where ID = 2054;
Run Code Online (Sandbox Code Playgroud)

我收到错误:错误报告 - SQL 错误:ORA-14402:更新分区键列会导致分区更改 14402. 00000 -“更新分区键列会导致分区更改”

我不允许使用启用行移动。

任何人都可以建议更新行的任何替代方法。

如果这可以在场景中使用,任何人都可以解释一下:

UPDATE <table_name> PARTITION (<partition_name>)
SET <column_name> = <value>
WHERE <column_name> <condition> <value>;
Run Code Online (Sandbox Code Playgroud)

oracle partitioning database-partitioning sql-update

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

FROM 语句中的 MySQL 错误:FROM 在此位置不是有效输入

在此错误中,它表明

“FROM 在这个位置不是一个有效的输入”。

这是带有 JOIN 子句的插入语句的代码

UPDATE phpcollab.projects

SET ph.APPROVED='2',
    pd.currentBudget = pd.currentbudget - ph.totalvalue

FROM phpcollab.projects pp JOIN phpcollab.photo ph
                             ON pp.projectID = ph.id
WHERE ID='1';
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-update

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