小编Jua*_*ado的帖子

MS Access中的SQL更新困难 - 操作必须使用可更新的查询

我有一个选择查询,它执行一些文本操作,基本上重新格式化一个字段,以便我可以在另一个表中查找它:

如果我有第一个表,如果我有一个像"J1/2"这样的字段,它会在相应字段中查找J1和J2的不同表中记录的ID.

这一切都运作良好.

现在我想更新原始表,所以我不必再使用这个字符串操作进行查找,但是我对更新查询的尝试以"操作必须使用可更新的查询"结束

有任何想法吗?

我的SELECT语句:

SELECT DISTINCT
t1.DD,
t1.TN,
t1.DD & " J" & MID(t1.TN,2,1) AS CalculatedStart,
t1.DD & " J" & MID(t1.TN,4,1) AS CalculatedEnd,
t2.ID
FROM t1 INNER JOIN t2
ON (t1.DD & " J" & MID(t1.TN,2,1)=t2.StartLink)
AND (t1.DD & " J" & MID(t1.TN,4,1)=t2.EndLink)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";
Run Code Online (Sandbox Code Playgroud)

回想一下 - 这很好,我从另一端得到了必要的t2.ID.

所以我想做一些事情:

UPDATE t1 SET t2ID = (
    SELECT Query1.ID
    FROM Query1
    WHERE t1.DD=Query1.DD
    AND t1.TN=Query1.TN
    )
WHERE t1.TN Like "J?/?"
AND t1.DD Like …
Run Code Online (Sandbox Code Playgroud)

sql ms-access sql-update

15
推荐指数
4
解决办法
7万
查看次数

SQL UPDATE,但仅当旧值为null时

我一直在使用这样的SQL来更新我的数据库中的属性列表:

update my_table set a = ?, b = ?, c = ?, d = ?,  where customer = ?
Run Code Online (Sandbox Code Playgroud)

但是我想要仅在数据库中没有值的情况下更新具有新值的属性.我怎样才能做到这一点?

sql null sql-update

14
推荐指数
3
解决办法
2万
查看次数

SQL Server 2005自动更新的DateTime列 - LastUpdated

我定义了一个表(参见下面的代码片段).如何添加约束或其他任何内容,以便在更改行时随时更新LastUpdate列?

CREATE TABLE dbo.Profiles
(
        UserName                                varchar(100)            NOT NULL,
        LastUpdate                              datetime                NOT NULL  CONSTRAINT DF_Profiles_LastUpdate DEFAULT (getdate()),
        FullName                                varchar(50)             NOT NULL,
        Birthdate                               smalldatetime           NULL,
        PageSize                                int                     NOT NULL CONSTRAINT DF_Profiles_PageSize DEFAULT ((10)),
        CONSTRAINT PK_Profiles PRIMARY KEY CLUSTERED (UserName ASC),
        CONSTRAINT FK_Profils_Users FOREIGN KEY (UserName) REFERENCES dbo.Users (UserName) ON UPDATE CASCADE ON DELETE CASCADE  
)
Run Code Online (Sandbox Code Playgroud)

database sql-server timestamp sql-update

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

单个属性上的NHibernate更新更新了sql中的所有属性

我在NHibernate中执行标准更新到单个属性.但是在提交事务时,sql update似乎设置了我在表上映射的所有字段,即使它们没有更改.当然这在Nhibernate中不是正常行为吗?难道我做错了什么?谢谢

using (var session = sessionFactory.OpenSession())
           {
               using (var transaction = session.BeginTransaction())
               {
                   var singleMeeting = session.Load<Meeting>(10193);
                   singleMeeting.Subject = "This is a test 2";

                   transaction.Commit();
               }
           }
Run Code Online (Sandbox Code Playgroud)

sql nhibernate sql-update

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

在UPDATE查询中使用SELECT

如何在Microsoft Access 2007 UPDATE中使用SELECT查询结果的表的字段.

这是选择查询:

SELECT Min(TAX.Tax_Code) AS MinOfTax_Code
FROM TAX, FUNCTIONS

WHERE (((FUNCTIONS.Func_Pure)<=[Tax_ToPrice]) AND ((FUNCTIONS.Func_Year)=[Tax_Year]))

GROUP BY FUNCTIONS.Func_ID;
Run Code Online (Sandbox Code Playgroud)

这是更新查询:

UPDATE FUNCTIONS

 SET FUNCTIONS.Func_TaxRef = [Result of Select query]
Run Code Online (Sandbox Code Playgroud)

sql ms-access-2007 sql-update

13
推荐指数
2
解决办法
10万
查看次数

不为空时更新字段

我有一个更新语句,更新字段x,y和z,其中id = xx.

在表格中,我有一些不同的x_created_datetime字段(对于不同人员维护/输入的记录的不同部分).我想编写一个单独的查询,如果为null,将更新此字段,但如果不为null则不管它.

所以我拥有的是:

UPDATE newspapers
SET scan_notes = "data",
    scan_entered_by = "some_name",
    scan_modified_date = "current_unix_timestamp"
WHERE id = X
Run Code Online (Sandbox Code Playgroud)

我需要的是一种添加以下内容的方法,但仍然总是更新以上内容:

scan_created_date = "current_unix_timestamp"
where scan_created_date is null
Run Code Online (Sandbox Code Playgroud)

我希望我能在没有第二笔交易的情况下做到这一点.有关如何实现这一目标的任何想法?

mysql sql null sql-update

13
推荐指数
3
解决办法
2万
查看次数

错误的MySQL更新查询后恢复?

我在表格中做了一个错误的更新查询.

我忘了在WHERE条款中创建一个id字段.

这样就更新了我的所有行.

如何恢复?

我没有备份....

mysql sql data-recovery sql-update

12
推荐指数
2
解决办法
3万
查看次数

具有唯一约束的原子多行更新

我有一个按排名顺序显示的标签表.为确保没有两行可以具有相同的排名,它们的值是唯一的:

create table label (
  id_label serial not null,
  rank integer not null,
  title text not null,
  constraint pri primary key (id_label),
  constraint unq unique (rank)
)
Run Code Online (Sandbox Code Playgroud)

无论是PostgreSQL还是MySQL,它们都表现出相同的行为.查询可能看起来像select title from label order by rank.假设该表包含:

id_label rank title
1        10   Cow
2        20   Apple
3        45   Horse
4        60   Beer
Run Code Online (Sandbox Code Playgroud)

现在假设我想重新排序两个标签,例如让Apple排在Cow之前.最简单的方法是交换他们的等级值:

update label
set rank = case when rank = 20 then 10 else 20 end
where id_label in (1,2)
Run Code Online (Sandbox Code Playgroud)

不.也不:

update label
set rank = case when rank …
Run Code Online (Sandbox Code Playgroud)

mysql sql postgresql sql-update

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

Oracle中的UPDATE语句使用SQL或PL/SQL仅更新第一个重复行

我正在寻找一个UPDATE语句,它只更新一个重复的行并保持其余(重复的行)原样,使用ROWID或其他东西或其他元素在Oracle SQL或PL/SQL中使用?

这是一个使用的示例duptest表:

CREATE TABLE duptest (ID VARCHAR2(5), NONID VARCHAR2(5));
Run Code Online (Sandbox Code Playgroud)
  • 跑一个 INSERT INTO duptest VALUES('1','a');

  • 跑了四(4)次 INSERT INTO duptest VALUES('2','b');

此外,必须始终更新(不删除)第一个重复行,而其他三个(3)必须保持原样!

非常感谢,Val.

sql oracle plsql sql-update

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

在SQL中更新多个记录

如何使用SQL在单个语句中更新多个记录?:

UPDATE records
   SET name='abc' where id=3,
   SET name='def' where id=1
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-update

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