使用平台:
SQL Server 2008 和 C++ 生成器
我正在两个表之间进行内部连接,这给了我一个错误:
找不到要更新的行
询问:
SELECT DISTINCT
b.Acc, b.Region, b.Off, b.Sale, a.OrgDate
FROM
sales b
INNER JOIN
dates a ON (a.Acc = b.Acc and a.Region = b.Region and a.year= b.year)
WHERE
(a.xdate <> a.yDate)
and (b.Sale = a.SaleDate)
and b.year = 2010
注意:Acc
, Region
,Off
是表 b 的主键,也存在于表 a 中。
表 a 有一个 id,它是查询中没有出现的主键。
事实证明,我的内部联接正在返回重复的行。
我将内部联接查询更改为使用“DISTINCT”,以便只返回不同的行而不是重复的。查询运行,但随后出现错误:
用于更新或刷新的键列信息不足。
事实证明,表 A 中的主键字段与表 B 中的字段名称相同
我发现这是在更新 ADO 记录集时发生的错误。BUG:当连接表共享相同的列名时更新 ADO 分层记录集出现问题
我有以下两个问题:
- 在内部联接查询上使用 Distinct 不是一个好主意吗?
- 有没有人找到与 TADO 查询相关的错误的解决方案?
谢谢,