如果满足另一个中指定的条件,则更新查询在其中一个中更新数据

Posted

技术标签:

【中文标题】如果满足另一个中指定的条件,则更新查询在其中一个中更新数据【英文标题】:Update Query updating data in one if it meets criteria specified in the other 【发布时间】:2015-08-18 16:35:38 【问题描述】:

这一切都在 Access 2007 中。我有一个包含三列(支付周期、开始日期、结束日期)的表。另一个表看起来像(日期、支付期间、其他数据)。我将其保留为其他数据,因为它与问题无关。我不知道如何进行更新查询以根据第二个表所属的日期范围更新第二个表中的支付期。所以如果第一个表看起来像这样:

|1| March 17, 2015| April 2, 2015 |
|2| April 3, 2015 | April 17, 2015|

然后,第二个表中日期在日期范围内的所有记录都应更新为具有相应的支付期。因此,如果在第二个表中存在日期为 2015 年 3 月 27 日的记录,则同一记录的 Pay period 应更新为“1”。我到处寻找,但没有找到任何东西。

【问题讨论】:

SQL Updating from an inner join 的可能重复项 这不是因为我的有一个范围,而那个没有。 【参考方案1】:

我将您的示例数据存储在名为 pay_periodssecond_table 的表中。然后,此 Access 2010 查询会根据您的要求更新 second_table.[Pay Period]。它在 Access 2007 中的工作方式应该相同。

UPDATE second_table AS s, pay_periods AS pp
SET s.[Pay Period] = [pp].[Pay Period]
WHERE s.Date Between [pp].[Start Date] And [pp].[End Date];

【讨论】:

当我把它放进去时,它会请求一些变量。是不是我实现的不对? 哦,别管我傻了!这很好用!非常感谢!【参考方案2】:

这是你要找的吗?

UPDATE TableA
INNER JOIN TableB ON TableA.[Date] BETWEEN [StartDate]
        AND [EndDate]
SET TableA.PayPeriod = TableB.PayPeriod;

【讨论】:

我收到 [查询表达式 'tblInvoices.[Activity Date] BETWEEN #[StartDate]#' 中的日期语法错误]] 抱歉,我使用的是日期变量#,请再试一次,看看是否有效。 Access SQL 不会让你加入ON TableA.[Date] BETWEEN [StartDate] AND [EndDate] 不幸的是,错误信息会令人困惑:Between operator without And in query expression 'TableA.[Date] BETWEEN [StartDate]'我> @HansUp 不幸的是,我没有现成的MS-Access 来测试代码,但我认为你是对的。这是我查询的依据:fmsinc.com/microsoftaccess/query/snytax/update-query.html

以上是关于如果满足另一个中指定的条件,则更新查询在其中一个中更新数据的主要内容,如果未能解决你的问题,请参考以下文章

mongodb更新查询删除命令中指定的字段以外的所有数组字段

mongodb更新查询删除命令中指定的字段以外的所有数组字段

媒体查询

如果条件满足,则更新表。 (将表b中的值更新为a)所需的相应值[重复]

SQL 语句 join where 如果一个条件不满足,则执行另一个条件

PHP / SQL:如果在表A和表B中更新后满足条件,则更新表C