2

我有两张桌子。

Payments由一个自动编号字段组成 - PaymentID。`

PaymentsMain包含两个字段 -MainIDPaymentID。它连接到Paymentson PaymentsMain.PaymentID = Payments.PaymentID

如何将单个值插入PaymentsMain.MainID,并添加一个新的相应记录,Payments其中自动编号计算为Payments.PaymentID,并将计算的自动编号用作“PaymentsMain.PaymentID”的值?

我想如果我手动生成- 基于添加到初始最大值PaymentID的 s 的某种运行总和,这是可能的,但我想知道这是否可以单独使用自动编号来完成。MainIDPaymentID

编辑

关系如下:关系

编辑

如果可以指定 Access 应该插入 的DEFAULTPaymentID,那也可以。

4

1 回答 1

1

鉴于以下情况:

  • INSERT如果语句的目标是已保存的查询,则可以从多个表中插入字段。
  • 可以插入自动编号字段。
  • 可以在 SQL 中模拟自动编号序列。

第一步是创建一个保存的查询,如下所示(target在本例中命名):

SELECT PaymentsMain.MainID, PaymentsMain.PaymentID, Payments.PaymentID
FROM PaymentsMain 
INNER JOIN Payments ON PaymentsMain.PaymentID = Payments.PaymentID;

然后计算当前在数据库中的最大自动编号(在本例中为 1626)。

最后,INSERT查询:

INSERT INTO target (MainID, PaymentsMain.PaymentID, Payments.PaymentID)
SELECT MainID, NewPaymentID, NewPaymentID
FROM (
    SELECT Main.MainID, Sum(1) + 1626 AS NewPaymentID
    FROM Main 
    LEFT JOIN Main AS m2 ON Main.MainID>=m2.MainID
    GROUP BY Main.MainID
)

(这假设自动编号是连续的,而不是随机的)。

于 2013-03-04T23:05:42.147 回答