在 INSERT 中嵌套 SELECT

don*_*onk 4 mysql insert

我正在尝试执行以下操作:

INSERT INTO stories 
   (vid, ip, body, timestamp) 
VALUES (
   (SELECT vid+1 FROM stories ORDER BY vid DESC LIMIT 1), 
   INET_ATON('127.0.0.1'), 
   'test', 
   NOW()
)
Run Code Online (Sandbox Code Playgroud)

但是我在弄清楚如何将 SELECT 语句的返回数据嵌套到 INSERT 语句中时遇到了问题。我需要弄清楚如何获得最高的现有 vid 并将其增加 1。

有任何想法吗?

gbn*_*gbn 6

使用显式 SELECT,而不是嵌套

INSERT INTO stories 
   (vid, ip, body, timestamp) 
SELECT
   COALESCE(MAX(vid),0)+1,    --max always returns one row if no group by
   INET_ATON('127.0.0.1'), 
   'test', 
   NOW()
FROM stories
ORDER BY vid DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)