gpt4 book ai didi

sql-server - 什么会导致 'rows affected' 不正确?

转载 作者:行者123 更新时间:2023-12-03 06:53:10 25 4
gpt4 key购买 nike

使用 Microsoft SQL Server Management Studio 2008。我完成了一个简单的事务:

BEGIN TRAN

SELECT ko.ID, os.ID AS ID2
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);

UPDATE table_b SET the_date=ko.the_date
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);

SELECT ko.ID, os.ID AS ID2
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);


ROLLBACK

所以 SELECT 和 UPDATE 应该是相同的。结果应该返回 0 行。但是 UPDATE 影响的行比 SELECT 从数据库获取的行少:

(受影响的 61 行)

(受影响的 60 行)

(0 行受影响)

我在这里缺少什么?

最佳答案

我怀疑最可能的原因是您的示例中的 Table_a 有一行包含重复的 ID - 这种情况下,您的第一个 select 中的联接中会出现一个额外的行,但是update 仅处理 Table_b 中的行,因此重复的行并不重要。这个声明应该告诉你罪魁祸首:

SELECT ko.ID
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL)
GROUP BY ko.ID
HAVING COUNT(*) > 1

关于sql-server - 什么会导致 'rows affected' 不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864360/

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