gpt4 book ai didi

sql - T-SQL - 如果查询仅返回一条记录,则需要运行更新

转载 作者:行者123 更新时间:2023-12-04 18:13:57 25 4
gpt4 key购买 nike

我需要更新一条记录 IFF 只有一条记录符合我的搜索条件。这是我所拥有的,但它很粗糙:

DECLARE @TestCount INT;

SELECT @TestCount = COUNT(*)
FROM TestRecords tr
WHERE
tr.UnitSerial = @UnitSerial
AND
tr.PassFailStatus = 1;

IF (@TestCount = 1)
UPDATE
TestRecords
SET
Invalid = 1
WHERE
TestRecordID =
(SELECT TestRecordID
FROM TestRecords tr
WHERE
tr.UnitSerial = @UnitSerial
AND
tr.PassFailStatus = 1);

当然这是示例代码 - SELECT 语句中有更多的限制和表连接等,并且它们都由事务包装,但这是存储过程逻辑的要点。

我认为必须有更好的方法,但我不知道那是什么。有什么建议么?

谢谢,戴夫

最佳答案

您可以在一个查询中执行以下操作:

with toupdate as (
select tr.*,
count(*) over () as cnt
from TestRecords tr
where tr.UnitSerial = @UnitSerial AND tr.PassFailStatus = 1
)
update toupdate
set Invalid = 1
where cnt = 1

这假设您使用的是 SQL 2005 或更高版本。

关于sql - T-SQL - 如果查询仅返回一条记录,则需要运行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12074495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com