相关疑难解决方法(0)

如何在SQL中使用JOIN执行UPDATE语句?

我需要使用其"父"表中的数据更新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但我不确定是否可能.

sql t-sql sql-server sql-server-2005 sql-update

1262
推荐指数
14
解决办法
152万
查看次数

如何在UPDATE查询中执行3个表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)

mysql join

451
推荐指数
4
解决办法
44万
查看次数

在SQL中更新多个列

有没有办法在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多列,写起来可能很烦人.

sql sql-server sql-update

155
推荐指数
7
解决办法
56万
查看次数

如何在SQLite上连接表时进行更新?

我试过了 :

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一起使用?

sqlite join sql-update

92
推荐指数
2
解决办法
5万
查看次数

SQL错误:ORA-00933:SQL命令未正确结束

我试图通过使用连接更新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 oracle

24
推荐指数
2
解决办法
23万
查看次数

使用SQL批量更新记录

我在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 sql-server sql-update

21
推荐指数
2
解决办法
11万
查看次数

运行更新查询时出现“子查询返回超过 1 个值”错误

请保持温和,我正在尝试更新 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 insert-update sql-server-2008 sql-update

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

SQL Server更新触发器不起作用

有一个数据库表有一个更新触发器.每当更新列时,都会自动计算其中一列.

我已经调整了触发器,我想再次在所有行上运行它.在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)

sql database sql-server triggers sql-update

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

表中的Foreach项更新另一个表T-sql

我有以下更新声明

Declare @customerName varchar(40)
Declare @age int

UPDATE [somedatabase].[contact] set age = @age where name = @customerName; 
Run Code Online (Sandbox Code Playgroud)

我还有一个单独的表,可以调用名称和年龄的cusHash.名字是独一无二的.我想阅读cusHash并为其所有值运行我的更新语句.

sql t-sql sql-server

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

SQL如何通过遍历表来检查存储过程是否存在

假设我有一个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 sql-server-2016

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