以下MySQL语法正常工作:
SELECT
IF (
(SELECT COUNT(id) FROM preorder) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder)
) AS X
这给了我一个值,我想在表中预先插入。如果我试试
INSERT INTO preorder (id)
VALUES
(SELECT
IF (
(SELECT COUNT(id) FROM preorder) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder)
) AS X)
它不再起作用了。 MySQL只是告诉我阅读这些内容: - )
语法的目的是能够创建自己的自动增量字段。如果计数为零,我想插入1,如果计数不为零,我想插入id列的最大值。
编辑: 我设法使用以下语法:
INSERT INTO preorder (id)
VALUES
(
IF (
(SELECT COUNT(id) FROM preorder AS Y) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder AS X)
)
)
有更好的方法吗?
答案 0 :(得分:1)
首先:您不能INSERT
进入用于子查询中SELECT
的表格。
第二:即使它会在系统上起作用,它也不会起作用:你有一个巨大的竞争条件,如果有两个这样的查询并行
第三:MySQL AUTO_INCREMENT
完全正确 - 你有没有看过它?