INSERT INTO bookings
(book_id,
member_id,
expire_date)
VALUES (1,
3,
(SELECT Max(expire_date)
FROM bookings
WHERE member_id = 1)
+ 5)
它不会让我第二次使用预订,geez!
答案 0 :(得分:1)
@Aniket解释了错误的含义。谢谢Aniket。
您的查询可以像这样转换:
INSERT INTO bookings
(book_id, member_id, expire_date)
SELECT
1,3, MAX(expire_date) + INTERVAL 5 DAY
FROM bookings
WHERE member_id=1
答案 1 :(得分:0)
来自MySQL文档subquery-errors
在以下情况下会出现此错误,会尝试修改表并从子查询中的同一个表中进行选择:
INSERT INTO bookings (book_id, member_id, expire_date)
VALUES (1,3,(SELECT MAX(expire_date) FROM bookings WHERE member_id=1)+5)
↑
您可以在UPDATE statement中使用子查询进行分配,因为子查询在UPDATE和DELETE statements以及SELECT statements中都是合法的。
但是,对于子查询FROM子句和更新目标,您不能使用相同的表(在本例中为表bookings
)。