mySQL INSERT和SELECT LAST_INSERT_ID()在一行中

时间:2014-10-30 11:17:09

标签: mysql sql case-statement last-insert-id

我想知道是否有办法改变这个陈述

INSERT INTO [table] VALUES ([values]);
SET @last_id = LAST_INSERT_ID();

成一行。

之类的东西
SELECT 
CASE WHEN ( SELECT COUNT(id) FROM [table] WHERE id=1 ) > 0 
THEN 'false' 
WHEN ( INSERT INTO [table] VALUES ([values]) )
THEN LAST_INSERT_ID()
END INTO @myid;

(可以有效地写成一行)

是否会尝试WHEN ( INSERT INTO ...)语句,它会返回一个我们可以检查的值吗?

即使它在INSERT语句中,它是否也会执行CASE

1 个答案:

答案 0 :(得分:0)

最后,我别无选择,只能使用评论中的建议将代码拆分为两行。

INSERT INTO table (id,....) VALUES (1234,........) ON DUPLICATE KEY id = LAST_INSERT_ID(id);
SELECT LAST_INSERT_ID into @myid