【问题标题】:Update query not updating the full field更新查询不更新完整字段
【发布时间】:2016-02-15 20:03:25
【问题描述】:

我有两张表,实际使用情况和预算。我需要用我的每月 Budget.goals 更新我的 [Actual Use].Goals。我有一个更新查询:

UPDATE [Actual Use]
INNER JOIN Budget ON [Actual Use].Property_ID = Budget.Property_ID
SET
    [Actual Use].Goal = [Budget].Goal
WHERE
    [Actual Use].Date = [Budget].Date

这个查询更新了我的实际使用表,但只更新了一个月。 2016 年 1 月 1 日。实际使用和预算都有一个日期字段,所有日期都是在每个月的第一天输入的,所以 2016 年 1 月 1 日、2016 年 2 月 1 日等......为什么我的更新只在一个月内有效,而不是每个月两个表的 Property_ID 和月份是否相同?

编辑 实际使用表按此顺序具有以下字段 Property_Id, Date, Use, Goal 和预算表有 Property_ID, Date, Goal

【问题讨论】:

  • 因为你用 WHERE 条件限制它
  • 如果没有实际看到您的表结构和示例数据,这很难说。 stackoverflow.com/help/how-to-ask
  • 您确定您的数据库中有符合您条件的录音吗?
  • 你应该加入ID和日期。

标签: sql ms-access


【解决方案1】:

我同意 Olivier 的评论。您需要同时使用 ID 和日期加入。

根据您的表键是什么,上面列出的查询可能会产生一对多或多对多的结果,其中,程序不知道要分配哪个目标。我想 Where 子句可能会捕获多对多的情况,但在我看来,可能会产生一些奇怪的行为。

可能的解决方案:

UPDATE [Actual Use]
INNER JOIN Budget ON [Actual Use].Property_ID = Budget.Property_ID 
AND [Actual Use].Date = Budget.Date
SET
    [Actual Use].Goal = [Budget].Goal

顺便说一句,数据似乎有点重复?假设表[实际使用]中没有“目标”,您仍然可以通过以下方式引用数据:

SELECT * FROM [Actual Use] au
JOIN Budget b on au.Property_ID = b.Property_ID AND
au.Date = b.Date 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多