我在存储过程中有一个更新语句,看起来像这样:
Update [TABLE_NAME]
Set XYZ=@ABC
Run Code Online (Sandbox Code Playgroud)
如果变量不为null或值为-1,是否有一种只触发update语句的好方法?
类似于一个IF NOT EXISTS...INSERT问题.
非常感谢.
我有这个示例T-SQL查询并在SQL-Server-2008上尝试此操作.
DECLARE nvarchar(1000) @wstring = "I asked my son's teacher, "How is my son doing now?""
UPDATE tablename SET columnname = ' " & @wstring & " ' where ... blah ... blah
Run Code Online (Sandbox Code Playgroud)
我知道上面的查询会抛出错误.
那么我如何处理 - 在SQL-Update语句中转义单引号和双引号.
请不要建议在每个报价之前手动添加"斜杠"或单引号,以及bouble-quote.
这是不切实际的,因为上面的示例只是一个sAmple,实际应用程序值超过1000个字符,这将从其他系统源接收.
我对以下语法有疑问.是否有更简洁的方法将其汇总到一个语句而不是两个语句中.我已经尝试了几次迭代,但这似乎是我成功执行这两个语句的唯一方法.
UPDATE employee
SET hire_date = '1979-03-15'
WHERE emp_id = 'PMA42628M'
UPDATE employee
SET hire_date = '1988-12-22'
where emp_id = 'PSA89086M';
Run Code Online (Sandbox Code Playgroud)
我也尝试了这个,我也尝试使用AND语句.都没有奏效.基本上我正在寻找一种不那么新手的方式然后上面的方法,如果存在的话.我花了很长时间搜索,却找不到一个.
UPDATE employee
SET hire_date = ('1979-03-15', '1988-12-22')
WHERE emp_id = ('PMA42628M', 'PSA89086M');
Run Code Online (Sandbox Code Playgroud)
对这个提出任何建议,顺便说一句,我使用的是sql server.谢谢
假设我有选择,它从table1返回我:
ID Name
1 Bob
2 Alice
3 Joe
Run Code Online (Sandbox Code Playgroud)
然后我希望基于此结果在另一个表中的UPDATE值:
UPDATE table2 SET Name = table1.Name WHERE ID = table1.ID
Run Code Online (Sandbox Code Playgroud)
据我所知,我只能在一个地方进行内部选择,例如:
UPDATE table2 SET Name = (select Name from table1) WHERE ...
Run Code Online (Sandbox Code Playgroud)
我不知道如何指定WHERE条件.
我正在使用此脚本,尝试连接2个表,其中包含3个条件并更新T1:
Update T1 set T1.Inci = T2.Inci
ON T1.Brands = T2.Brands
AND T1.Category= T2.Category
AND T1.Date = T2.Date
Run Code Online (Sandbox Code Playgroud)
但我遇到了:
Incorrect syntax near the keyword 'ON'.
无法弄明白为什么.
我想知道将列更新为+1的最简单方法是什么?我将根据用户提交新帖子的时间更新类别的帖子数.
谢谢.
我在SQL Server 2008环境中有两个表,具有以下结构
Table1
- ID
- DescriptionID
- Description
Table2
- ID
- Description
Run Code Online (Sandbox Code Playgroud)
Table1.DescriptionID映射到Table2.ID.但是,我不再需要了.我想进行批量更新,将Table1的Description属性设置为Table2中与之关联的值.换句话说,我想做这样的事情:
UPDATE
[Table1]
SET
[Description]=(SELECT [Description] FROM [Table2] t2 WHERE t2.[ID]=Table1.DescriptionID)
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否是合适的方法.有人能告诉我怎么做吗?
是否可以在SQL Server 2005中的更新语句的from部分中使用cross apply子句?
我试图找出是否有办法更新记录,而不必列出要更新的每个列名称.
例如,如果我可以使用类似的东西,那将是很好的:
// the parts inside braces are what I am trying to figure out
UPDATE Employee
SET {all columns, without listing each of them}
WITH {this record with id of '111' from other table}
WHERE employee_id = '100'
Run Code Online (Sandbox Code Playgroud)
如果可以这样做,那么编写此类查询的最直接/最有效的方法是什么?