我在尝试着
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) 我有这样的桌子
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”
如果值仅为数字,有没有办法更新 mysql 中的列?
IE。 UPDATE myTable SET ColumnA =NewValue WHERE ColumnA isnumeric
Column A是varchar(25)和Column A值可以是文本或 1 或 2 或 23 ...
感谢你
抱歉标题含糊不清。
我有两个表:
表格1: mailing_email
表 2(动态表,但现在是): membership
表 1 包含数据库中所有电子邮件帐户的列表和一些辅助字段,例如姓名。它还有一个名为communicate.
communicate基本上是我的术语subscribed。任何取消订阅链接都将设置communicate为 false。
双方mailing_email并membership有一个email与communicate列。
我需要编写一个查询,其中发生以下情况:
mailing_email.communicate更新为membership.communicatewhere mailing_email.email=的当前状态membership.email。如果存在mailing_email其中不存在的电子邮件membership,则该communicate字段保持不变。
我将如何以最快的方式做到这一点?每个表将有数千行,此同步命令将经常运行。
我有一张桌子
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) 我正在尝试更新一个类似于以下内容的表:
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) 我在 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)
如果ItemID和Barcode存在于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
我在存储过程中有一个 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) 我想更新分区键。分区如下
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) 在此错误中,它表明
“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) sql-update ×10
sql ×5
mysql ×4
sql-server ×4
oracle ×2
c# ×1
database ×1
date ×1
db2 ×1
join ×1
numeric ×1
odp.net ×1
parameters ×1
partitioning ×1
regex ×1