我有一个选择查询,它执行一些文本操作,基本上重新格式化一个字段,以便我可以在另一个表中查找它:
如果我有第一个表,如果我有一个像"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来更新我的数据库中的属性列表:
update my_table set a = ?, b = ?, c = ?, d = ?, where customer = ?
Run Code Online (Sandbox Code Playgroud)
但是我想要仅在数据库中没有值的情况下更新具有新值的属性.我怎样才能做到这一点?
我定义了一个表(参见下面的代码片段).如何添加约束或其他任何内容,以便在更改行时随时更新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) 我在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) 如何在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) 我有一个更新语句,更新字段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)
我希望我能在没有第二笔交易的情况下做到这一点.有关如何实现这一目标的任何想法?
我在表格中做了一个错误的更新查询.
我忘了在WHERE条款中创建一个id字段.
这样就更新了我的所有行.
如何恢复?
我没有备份....
我有一个按排名顺序显示的标签表.为确保没有两行可以具有相同的排名,它们的值是唯一的:
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) 我正在寻找一个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在单个语句中更新多个记录?:
UPDATE records
SET name='abc' where id=3,
SET name='def' where id=1
Run Code Online (Sandbox Code Playgroud) sql-update ×10
sql ×9
mysql ×3
null ×2
sql-server ×2
database ×1
ms-access ×1
nhibernate ×1
oracle ×1
plsql ×1
postgresql ×1
timestamp ×1