是否可以在不使用视图的情况下实现下一步,但只需一个查询?我有两张桌子:
表A-> TanbleB(1-many)ON TableA.Id = TableB.TableAId
我需要更新表A中的一个字段(TableA.Field1),以获取TableA中满足tableA中一个字段条件的记录(WHERE TableA.Field2 = SomeValue) 。 TableA.Field1将从TableB更新,最后插入的值(最后插入相关记录中的值到TableA)。
我会举一个例子:
UPDATE TableA a SET Field1 = (SELECT TOP 1 b.Feild1 * b.Field2 FROM TableB b WHERE b.TableAId = a.id) WHERE field2 = 1
我知道上面的示例不起作用,但我尝试使用INNER JOIN并尝试失败。我有想法使用这样的东西:
UPDATE TableA INNDER JOIN ( SELECT ... FROM TABLE B) ON TABLEA.Id= TableB.TableAId SET ....
但是2ns查询应该为每个DISTINCT TableAId返回1条记录,但只返回最后一条记录。
我希望我在这里有所作为。
提前致谢。
答案 0 :(得分:0)
Access中的一个缺陷是你无法运行基于“SELECT”查询的“UPDATE”查询,它通常会给出错误:
Operation must use an updateable query
唯一的方法就是你所说的创建一个“SELECT”查询的视图,然后在你的表上内部连接这个,Access然后使用静态记录集并且可以处理“UPDATE”查询ok
或者,您可以编写一个VBA过程,逐行逐步执行Recordset。
祝你好运:)
更新:
SELECT b.TableAId, b.Feild1 * b.Field2 INTO tblView FROM TableB As b WHERE b.field2 = 1
答案 1 :(得分:0)
这是一些可以做你想做的SQL
UPDATE T1 INNER JOIN T2 ON T1.ID = T2.T1ID SET T1.F2 = [T2].[F2]*[T2].[F3] WHERE (((T1.F1)="ABC") AND ((T2.ID)=DMax("[ID]","[T2]","[T1ID]=" & [T1].[ID])));
这取决于T1.ID是T1和T2的主键.T1ID是T2中的索引字段