我需要使用其"父"表中的数据更新SQL Server 2005中的此表,如下所示:
拍卖
id (int)
udid (int)
assid (int)
Run Code Online (Sandbox Code Playgroud)
UD
id (int)
assid (int)
Run Code Online (Sandbox Code Playgroud)
sale.assid包含要更新的正确值ud.assid.
什么查询会这样做?我在考虑,join但我不确定是否可能.
我问了一个问题并得到了这个答复.
UPDATE TABLE_A a JOIN TABLE_B b
ON a.join_col = b.join_col AND a.column_a = b.column_b
SET a.column_c = a.column_c + 1
Run Code Online (Sandbox Code Playgroud)
现在我希望这样做,如果有3个表涉及这样的事情.
UPDATE tableC c JOIN tableB b JOIN tableA a
Run Code Online (Sandbox Code Playgroud)
我的问题基本上是...这可以在UPDATE声明中做3个表连接吗?它的正确语法是什么?谢谢.我做的......
JOIN tableB, tableA
JOIN tableB JOIN tableA
Run Code Online (Sandbox Code Playgroud) 有没有办法在SQL服务器中更新多个列,就像使用insert语句一样?
就像是:
Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id
Run Code Online (Sandbox Code Playgroud)
或类似的东西,而不是像这样:
update table set a=t2.a,b=t2.b etc
Run Code Online (Sandbox Code Playgroud)
如果你有100多列,写起来可能很烦人.
我试过了 :
UPDATE closure JOIN item ON ( item_id = id )
SET checked = 0
WHERE ancestor_id = 1
Run Code Online (Sandbox Code Playgroud)
和:
UPDATE closure, item
SET checked = 0
WHERE ancestor_id = 1 AND item_id = id
Run Code Online (Sandbox Code Playgroud)
两者都适用于MySQL,但那些在SQLite中给我一个语法错误.
如何使这个UPDATE/JOIN与SQLite版本3.5.9一起使用?
我试图通过使用连接更新oracle SQL开发人员中的记录.以下是我的查询 -
UPDATE system_info set field_value = 'NewValue'
FROM system_users users
JOIN system_info info ON users.role_type = info.field_desc
where users.user_name = 'uname'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试执行它时,我得到以下错误 -
Error report: SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
Run Code Online (Sandbox Code Playgroud)
我试着删除JOINS
UPDATE system_info info
SET info.field_value = 'NewValue'
FROM system_users users
where users.user_name = 'uname' AND users.role_type = info.field_desc
Run Code Online (Sandbox Code Playgroud)
但是仍然有相同的错误,任何人都可以告诉我错误的原因和解决方案
我在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 中的查询,但遇到错误。这是我在同一个数据库中的两个表和下面提供的查询,我的要求是根据表 1 更新 table2 中的列 groupCode,但我面临以下错误:
错误
消息 512,级别 16,状态 1,第 1 行子查询返回了 1 个以上的值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。该语句已终止。
表格1
**Dept** **DeptCode** **GroupName** **GroupCode**
IT 32 Login-Els 1
IT 32 QC-Els 4
CT 20 Login-OUP 1
CT 20 XML-OUP 2
CT 20 QC-OUP 4
MECH 34 Login-CEN 1
MECH 34 XML-CEN 2
MECH 34 PAGINATION-CEN 3
MECH 34 QC-CEN 4
Run Code Online (Sandbox Code Playgroud)
表2
**Activity** **DeptCode** **Group**
Login-Els 32 NULL
QC-Els 32 NULL
Login-OUP 20 NULL
XML-OUP 20 NULL
QC-OUP 20 NULL …Run Code Online (Sandbox Code Playgroud) 有一个数据库表有一个更新触发器.每当更新列时,都会自动计算其中一列.
我已经调整了触发器,我想再次在所有行上运行它.在SQL Server Management Studio中,如果我在表上选择"编辑前200行"并编辑其中一行,则更新触发器可以正常工作.但是当我写一个像这样的查询时:
UPDATE MyTable
SET SomeIrrelevantColumn = 0
Run Code Online (Sandbox Code Playgroud)
触发器不起作用,应该由触发器计算的列保持不变.
如何在所有行上手动运行触发器?
编辑:这是触发器:
USE [MY_DATABASE]
GO
/****** Object: Trigger [dbo].[MY_TABLE_AUER] Script Date: 04/24/2013 00:05:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[MY_TABLE_AUER]
ON [dbo].[MY_TABLE]
AFTER UPDATE
AS
DECLARE @UPD_COLUMN_A int,
@INS_COLUMN_A int,
@UPD_COLUMN_B int,
@UPD_COLUMN_C varchar(255),
@UPD_COLUMN_D varchar(255),
@UPD_COLUMN_E int,
@UPD_COLUMN_F datetime
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT @UPD_COLUMN_A …Run Code Online (Sandbox Code Playgroud) 我有以下更新声明
Declare @customerName varchar(40)
Declare @age int
UPDATE [somedatabase].[contact] set age = @age where name = @customerName;
Run Code Online (Sandbox Code Playgroud)
我还有一个单独的表,可以调用名称和年龄的cusHash.名字是独一无二的.我想阅读cusHash并为其所有值运行我的更新语句.
假设我有一个Name, Date, StoredProcedure在SQL Server 2016 中有列的表
我需要查询此表并循环遍历存储过程列并检查数据库中是否存在此存储过程.如果它不存在,那么我需要仅为存储过程列使该行为null.
这是我尝试过但它不起作用
Select m1.StoredProcedure
from MyTable m1
where
IF NOT EXISTS (SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'StoredProcedure')
AND type IN (N'P', N'PC'))
Then Update MyTable m2
Set StoredProcedure = ''
Where m2 StoredProcedure = m1.StoredProcedure
Run Code Online (Sandbox Code Playgroud) sql-server ×7
sql ×6
sql-update ×6
join ×2
t-sql ×2
database ×1
mysql ×1
oracle ×1
sqlite ×1
triggers ×1