0

所以我需要从我的表中选择一个值并稍微修改它以在插入时用作同一表中新行中的值。见下文:

INSERT INTO reservationbody(
    reservationid,
    driverid,
    tripnumber,
    fromlocation,
    tolocation
)
VALUES(
    1,
    2,
    (
        SELECT
           MAX(tripnumber) + 1
        FROM reservationbody
        WHERE reservationid = 1
    ),
    'here',
    'there'
)

我收到以下错误:

您不能在 FROM 子句中指定目标表“reservationbody”进行更新

我查看了其他问题并发现了很多关于此错误的问题,但它们似乎都与更新和删除有关,并且都需要已经存在的 PK 值。没有处理插入。

基本上我在这里期望的是,如果SELECT MAX(tripnumber) FROM reservationbody where reservationid = 1返回值4,那么插入应该添加一个tripnumber值为5的新行

谁能建议我如何做到这一点?

4

1 回答 1

2

你试过吗(我知道你可以在 MS SQL 中做到这一点):

INSERT INTO reservationbody(reservationid,driverid,tripnumber,
                                       fromlocation,tolocation)
SELECT 1, 2, MAX(tripnumber) + 1, 'here', 'there'
FROM reservationbody
WHERE reservationid = 1
于 2012-09-10T09:26:24.733 回答